hash、chunkhash和contenthash

简介: webpack 通用配置优化

webpack.config.js配置如下:

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  entry: {
    main: './src/index.js',
    vender: ['lodash']
  },
  mode: 'development',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].[hash].js'
  },
  module: {
    rules: [
      { test: /\.css/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/template.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].[hash].css'
    })
  ]
}

hash

第一次我们尝试使用hash打包

在这里插入图片描述

生成的hash值是63f9504be8bb69da6b5c
然后我们再改动index.js把 console.log('1') 变成 console.log('2')

在这里插入图片描述
生成的hash值是7dcbf720332877689f08

使用hash存在的问题:我只改动main里面的代码,css代码没有变化不应该打包, 公共的JS代码vender没有变化也不应该打包。

chunkhash

第二次我们把webpack.config.js里面的hash换成chunkhash再试试

在这里插入图片描述
生成的hash值是6ddad8554b64e9367d10
然后我们再改动index.js把 console.log('1') 变成 console.log('2')

在这里插入图片描述
生成的hash值是52804c9231136d999383

优化了公共的JS代码vender不会打包了

使用hash存在的问题:我只改动main里面的代码,css代码没有变化不应该打包

contenthash

第三次我们把webpack.config.js里面的css部分配置chunkhash换成contenthash再试试,因为JS的问题解决了,只剩下CSS的问题。

在这里插入图片描述
生成的hash值是2ffc70412efa0447f65c
然后我们再改动index.js把 console.log('1') 变成 console.log('2')

在这里插入图片描述
我们只改动入口文件,所以只会打包入口文件main,其他文件都不会重新打包。
优化了CSS代码不会打包了

总结:最佳配置如下:

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')

module.exports = {
  entry: {
    main: './src/index.js',
    vender: ['lodash']
  },
  mode: 'development',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].[chunkhash].js'
  },
  module: {
    rules: [
      { test: /\.css/, use: [MiniCssExtractPlugin.loader, 'css-loader'] }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './public/template.html'
    }),
    new MiniCssExtractPlugin({
      filename: 'css/[name].[contenthash].css'
    })
  ]
}
相关文章
|
6天前
|
存储 负载均衡 算法
Hash介绍与应用详解
哈希算法在计算机科学中有着广泛而重要的应用,从数据存储、数据完整性校验到密码安全和分布式系统中的负载均衡,哈希函数都发挥着关键作用。通过本文的介绍和示例代码,希望您能更好地理解哈希的基本概念和实际应用,并在您的项目中有效地应用这些知识。
22 3
|
5月前
|
存储 缓存 搜索推荐
Hash Table
【6月更文挑战第12天】
31 1
|
6月前
|
Shell
|
存储 算法 安全
Hash 算法详细介绍与实现 (二)
书接上回,昨天写了第一部分,《Hash 算法详细介绍与实现 (一)》详细介绍了Hash表和Hash算法的相关概念以及算法的基本原理。同时简单介绍几种hash算法的实现:直接取余法和乘法取整法;本文接着详细唠唠Hash算法和Hash表这个数据结构的具体实现以及Hash算法和Hash表常见问题的解决方案,比如解决Hash表的冲突问题等等.相关的理论知识已在上篇文章详细介绍,这里就不再赘述,多的不说少的不唠,直接进入今天的主题:利用Hash算法实现Hash表
482 1
|
数据安全/隐私保护 Python
散列函数(Hash Function)
散列函数(Hash Function)是一种将任意大小的数据映射到固定大小的数据的函数。通常,散列函数将输入数据转换成固定长度的输出,称为散列值(Hash Value),散列值通常是一串数字和字母组成的固定长度的字符串。散列函数可以用于数据加密、数据完整性检查、数据压缩等方面。
145 1
|
存储 算法
|
存储 算法
hash
一.什么是hash 百度百科上的定义是: 是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
103 0
|
存储 NoSQL Redis
|
存储 算法 安全
什么是 Hash 算法?
散列算法(Hash Algorithm),又称哈希算法,杂凑算法,是一种从任意文件中创造小的数字「指纹」的方法。与指纹一样,散列算法就是一种以较短的信息来保证文件唯一性的标志,这种标志与文件的每一个字节都相关,而且难以找到逆向规律。因此,当原有文件发生改变时,其标志值也会发生改变,从而告诉文件使用者当前的文件已经不是你所需求的文件。
什么是 Hash 算法?