飞道的博客

Webpack中的文件指纹

317人阅读  评论(0)

1. 什么是文件指纹?

文件指纹就是打包后输出的文件名的后缀,主要用来对修改后的文件做版本区分。

2. 文件指纹有哪几种?

1. Hash:和整个项目的构建相关,只要项目文件有修改,整个项目构建的 hash 值就会更改,一般用于图片设置;

2. Chunkhash:与 webpack 打包的 chunk 有关,不同的 entry 会生成不同的 chunkhash 值,一般用于设置JS文件;

3. Contenthash:根据文件内容来定义 hash ,文件内容不变,则 contenthash 不变,一般用于设置CSS文件;

3. JS的文件指纹设置;


  
  1. 'use strict';
  2. const path = require( 'path');
  3. module. exports = {
  4. entry: {
  5. index: './src/index.js',
  6. search: './src/search.js'
  7. },
  8. output: {
  9. path: path. join(__dirname, 'dist'),
  10. // 设置chunkhash,长度为8位
  11. filename: '[name]_[chunkhash:8].js'
  12. }
  13. };

4. CSS的文件指纹设置;


  
  1. 'use strict';
  2. const path = require( 'path');
  3. const MiniCssExtractPlugin = require( 'mini-css-extract-plugin');
  4. module. exports = {
  5. entry: {
  6. index: './src/index.js',
  7. search: './src/search.js'
  8. },
  9. output: {
  10. path: path. join(__dirname, 'dist'),
  11. filename: '[name]_[chunkhash:8].js'
  12. },
  13. plugins: [
  14. new MiniCssExtractPlugin({
  15. // 设置CSS为contenthash,长度为8位
  16. filename: '[name]_[contenthash:8].css'
  17. })
  18. ]
  19. };

5. 图片的文件指纹设置;

图片文件的指纹设置使用file-loader,常用的占位符的含义如下:

图片的文件指纹设置如下:


  
  1. 'use strict';
  2. const path = require( 'path');
  3. // npm i mini-css-extract-plugin -D
  4. const MiniCssExtractPlugin = require( 'mini-css-extract-plugin');
  5. module. exports = {
  6. entry: {
  7. index: './src/index.js',
  8. search: './src/search.js'
  9. },
  10. output: {
  11. path: path. join(__dirname, 'dist'),
  12. // 设置JS的文件指纹为chunkhash,长度为8位
  13. filename: '[name]_[chunkhash:8].js'
  14. },
  15. mode: 'production',
  16. module: {
  17. rules: [
  18. {
  19. test: /.js$/,
  20. use: 'babel-loader'
  21. },
  22. {
  23. test: /.css$/,
  24. use: [
  25. // 去掉style-loader,将CSS单独提取一个文件
  26. MiniCssExtractPlugin. loader,
  27. 'css-loader'
  28. ]
  29. },
  30. {
  31. test: /.less$/,
  32. use: [
  33. // 去掉style-loader,将CSS单独提取一个文件
  34. MiniCssExtractPlugin. loader,
  35. 'css-loader',
  36. 'less-loader'
  37. ]
  38. },
  39. {
  40. test: /.(png|jpg|gif|jpeg)$/,
  41. use: [
  42. {
  43. loader: 'file-loader',
  44. options: {
  45. // 设置的图片指纹为hash,长度为8位
  46. name: '[name]_[hash:8].[ext]'
  47. }
  48. }
  49. ]
  50. },
  51. {
  52. test: /.(woff|woff2|eot|ttf|otf)$/,
  53. use: [
  54. {
  55. loader: 'file-loader',
  56. options: {
  57. // 设置字体的指纹为hash,长度为8位
  58. name: '[name]_[hash:8][ext]'
  59. }
  60. }
  61. ]
  62. }
  63. ]
  64. },
  65. plugins: [
  66. // 将CSS提取出来一个文件
  67. new MiniCssExtractPlugin({
  68. filename: '[name]_[contenthash:8].css'
  69. })
  70. ]
  71. };


转载:https://blog.csdn.net/weixin_40629244/article/details/128539863
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场