三种hash


|

名称

|

作用

| | —- | —- | | hash | 每次webpack打包会有一个hash值,文件后缀可以赋值这个hash | | | 会根据chunk生成的hash,如果打包源来自同一个chunk,那么chunkhash就会一样 | | | 只要文件发生了改变,整个项目的hash就会发生改变 | | chunkhash | 会根据chunk生成的hash,如果打包源来自同一个chunk,那么chunkhash就会一样 | | | 不同的entry会生成不同的chunkhash | | contenthash | 文件内容改变就会改变conenthash |

占位符名称


|

占位符名称

|

描述

| | —- | —- | | [ext] | 资源后缀名 | | [name] | 文件名称 | | [path] | 文件的相对路径 | | [folder] | 文件所在的文件夹 | | [contenthash] | 文件内容的hash | | [chunkhash] | chunk组的hash | | [hash] | 打包的hash | | [emoji] | emoji |

具体资源hash使用


js文件指纹 [chunkhash:8]

  1. output: {
  2. filename: 'js/[name].[chunkhash].js',
  3. path: path.resolve(__dirname, 'dist'),
  4. },

css文件指纹 [contenthash:8]

  1. new MiniCssExtractPlugin({ filename: 'css/[name].[contenthash:8].css' }),

png/images[hash:8]

这个hash就是指的是文件内容的hash,默认是md5生成的

  1. module: {
  2. rules: [
  3. {
  4. test: /\.(png|svg|gif|jpe?g)$/,
  5. type: 'asset',
  6. generator: {
  7. filename: 'img/[name].[hash:8][ext]',
  8. },
  9. parser: {
  10. dataUrlCondition: {
  11. maxSize: 30 * 1024,
  12. },
  13. },
  14. },
  15. ],
  16. },

html

  1. new htmlWebpackPlugin({
  2. template: 'publish/index.html',
  3. filename: 'index.html',
  4. chunks: ['app'],
  5. }),