3-2 webpack 打包时 hash 码是怎么生成的,随机值一样时怎么避免?
webpack 打包时 hash 码是怎么生成的
webpack 生态中存在多种计算 hash 的方式:
1、输出的结果全部使用 hash 的情况
每个文件都具有相同的 hash 值,因为 hash 是基于我们使用的所有源文件生成的。
如果重新运行该构建而不更改任何内容,则生成的 hash 将保持不变。
如果仅仅编辑一个文件,则 hash 值将会发生变化,并且所有生成捆绑的名称中都会包含此新的 hash 值
2、输出的结果全部使用 chunkhash 的情况
chunkhash 是根据不同的入口进行依赖文件解析,构建对应的 chunk,生成对应的 hash 值
在使用上来说:我们把一些公共库和程序入口文件区分开来,单独打包构建,接着可以采用 chunkhash 方式来生成 hash 值,那么只要我们不改动公共库的代码,就可以保证其 hash 值不受影响,这样也起到缓存的作用
3、输出的结果全部使用 contenthash 的情况
每个生成的文件名称都有一个唯一的 hash 值,该哈希值是根据该文件的内容计算得出的。
当要构建的文件内容发生改变的时候,就会生成新的 hash 值,且该文件的改变并不会影响和它同一个模块下的其他文件。
随机值一样时怎么避免?
webpack 在计算 hash 后分割 chunk。产生相同随机值可能是因为这些文件属于同一个 chunk,可以将某一个文件提到独立的 chunk,放入 entry