hash
hash
和每次 build
有关,没有任何改变的情况下,每次编译出来的 hash
都是一样的,但当你改变了任何一点东西,它的hash
就会发生改变。简单的说就是你改了任何东西,hash
就会和上次不一样了。
chunkhash
chunkhash
是根据具体每一个模块文件自己的的内容包括它的依赖计算所得的hash
,所以某个文件的改动只会影响它本身的hash
,不会影响其它文件。
contenthash
它的出现主要是为了解决,让css
文件不受js
文件的影响。比如foo.css
被foo.js
引用了,所以它们共用相同的chunkhash
值。但这样子是有问题的,如果foo.js
修改了代码,css
文件就算内容没有任何改变,由于是该模块的 hash
发生了改变,其css
文件的hash
也会随之改变。
这个时候我们就可以使用contenthash
了,保证即使css
文件所处的模块里有任何内容的改变,只要 css
文件内容不变,那么它的hash
就不会发生变化。
contenthash
简单理解就是 moduleId.content
所生成的 hash
。