output 的 hash/chunkhash/contenthash 的区别
在 webpack 的配置中可以控制 output chunk 文件的名称
先出结论
- hash 计算与整个项目的构建相关
- chunkhash 计算与同一 chunk 内容相关
- contenthash 计算与文件内容本身相关
同时也可以看 rspack 对于这几个选项的解释 (opens in a new tab)
hash
hash 计算是跟整个项目的构建相关
output: {
filename: "[name].[hash].js", // 改为 hash
},
...
plugins: [
new MiniCssExtractPlugin({
filename: 'index.[hash].css' // 改为 hash
}),
]
我们可以发现,生成文件的 hash 和项目的构建 hash 都是一模一样的。
chunkhash
filename: "[name].[chunkhash].js", // 改为 chunkhash
contenthash
根据产物内容创建出唯一 hash 值,也就是说文件内容不变,hash 就不变