hash
每一次构建后生成的哈希值都不一样,即使文件内容压根没有改变。
问题: 一旦修改了任何一个文件,整个项目的文件缓存都将失效。
chunkhash
chunkhash根据不同的入口文件(Entry)进行依赖文件解析、构建对应的chunk,生成对应的哈希值。
在生产环境里把一些公共库和程序入口文件区分开,单独打包构建,接着我们采用chunkhash的方式生成哈希值,那么只要我们不改动公共库的代码,就可以保证其哈希值不会受影响。
问题: 例如index.css被index.js引用了,所以共用相同的chunkhash值。如果index.js更改了代码,css文件就算内容没有任何改变,由于是该模块发生了改变,导致css文件会重复构建。
contenthash
contenthash是针对文件内容级别的,只有模块的内容变了,hash值才改变