1.webpack中hash、chunkhash、contenthash區別
如果都使用hash的話,因為這是工程級別的,即每次修改任何一個文件,所有文件名的hash至都將改變。所以一旦修改了任何一個文件,整個項目的文件緩存都將失效。
chunkhash根據不同的入口文件(Entry)進行依賴文件解析、構建對應的chunk,生成對應的哈希值。在生產環境里把一些公共庫和程序入口文件區分開,單獨打包構建,接着我們采用chunkhash的方式生成哈希值,那么只要我們不改動公共庫的代碼,就可以保證其哈希值不會受影響。並且webpack4中支持了異步import功能,固,chunkhash也作用於此
contenthash是針對文件內容級別的,只有你自己模塊的內容變了,那么hash值才改變,所以我們可以通過contenthash解決上訴問題。
打包構建使用hash:
chainWebpack: config => { // csshansh config.plugin('extract-css').tap(args => [{ filename: `css/[name].[contenthash].css`, chunkFilename: `css/[name].[contenthash].css` }]) }, configureWebpack: config => { config.output.filename = `js/[name].[contenthash].js` config.output.chunkFilename = `js/[name].[contenthash].js` }