webpack知識點

hash與chunkhash

hash:css

  1. hash是跟整個項目的構建相關,構建生成的文件hash值都是同樣的,因此hash計算是跟整個項目的構建相關,同一次構建過程當中生成的hash都是同樣的,只要項目裏有文件更改,整個項目構建的hash值都會更改。緩存

  2. 若是出口是hash,那麼一旦針對項目中任何一個文件的修改,都會構建整個項目,從新獲取hash值,緩存的目的將失效。hash

chunkhash:class

  1. 採用hash計算的話,每一次構建後生成的hash值都不同,即便文件內容壓根沒有改變。這樣子是沒辦法實現緩存效果,咱們須要另外一種hash值計算方法,即chunkhash。打包

  2. chunkhash和hash不同,它根據不一樣的入口文件(Entry)進行依賴文件解析、構建對應的chunk,生成對應的hash值。咱們在生產環境裏把一些公共庫和程序入口文件區分開,單獨打包構建,接着咱們採用chunkhash的方式生成hash值,那麼只要咱們不改動公共庫的代碼,就能夠保證其hash值不會受影響。程序

  3. 因爲採用chunkhash,因此項目主入口文件main.js及其對應的依賴文件main.css因爲被打包在同一個模塊,因此共用相同的chunkhash,可是公共庫因爲是不一樣的模塊,因此有單獨的chunkhash。這樣子就保證了在線上構建時只要文件內容沒有更改就不會重複構建方法

相關文章
相關標籤/搜索