webpack5代码分离

之前写的文章在这里:https://blog.csdn.net/weixin_42349568/article/details/122797185
本文参考链接:https://juejin.cn/post/7006650476158517256#heading-3

一,实际开发的使用

主要就是上文中的第四步,动态导入。

二,默认配置

Webpack 提供了代码分离的特性,默认是将 异步代码 按照以下方式进行代码分离的:

module.exports = {
  //...
  optimization: {
    splitChunks: {
      chunks: 'async', // 同步 or 异步,这里是异步
      minSize: 20000, // 如果模块大小小于这个值,则不会被分割 20k
      minRemainingSize: 0, // 最小可保存大小,开发模式下为 0,其他情况下等于 minSize,一般不用手动配置
      minChunks: 1, // 如果模块被引用次数小于这个值,则不会被分割
      maxAsyncRequests: 30, // 异步模块,一次最多被加载的次数
      maxInitialRequests: 30, // 入口模块最多被加载的次数
      enforceSizeThreshold: 50000, // 强制分割的大小阈值 50k
      cacheGroups: { // 缓存组
				// 打包第三方库
        defaultVendors: {
          test: /[\\/]node_modules[\\/]/, // 正则匹配第三方库文件
          priority: -10, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
        },
				// 打包公共模块
        default: {
          minChunks: 2, // 被超过两个模块引用,才会被打包
          priority: -20, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
        },
      },
    },
  },
};

三, 同步代码的处理

但显然这对于同步代码是无能为力的,于是我们这样设置:将 optimization.splitChunks.chunks 的值设置为 all ,它表示:不管同步还是异步,都会进行代码分离,但是请注意,如果你的共用模块不属于第三方库(也就是不能在 node_modules 中找到),而属于你自己写的一些代码模块,这些代码就会按照 cacheGroups 下的 default 配置打包。如果属于第三方库,就按照 cacheGroups 下的 defaultVendors 配置打包。

module.exports = {
  //...
  optimization: {
    splitChunks: {
      chunks: 'all', // 同步或异步
      minSize: 100, // 自己设置最小分割大小
      cacheGroups: { // 缓存组
				// 打包第三方库
        defaultVendors: {
          test: /[\\/]node_modules[\\/]/, // 正则匹配第三方库文件
          priority: -10, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
					filename: 'vendors.js' // 打包后的文件名
        },
				// 打包公共模块
        default: {
          minChunks: 2, // 被超过两个模块引用,才会被打包(可以去掉)
          priority: -20, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
					filename: 'common.js' // 打包后的文件名
        },
      },
    },
  },
};

四,我在项目中的配置

optimization: {
    ...//其他配置
    splitChunks: {
      chunks: 'all', // 同步或异步
      // minSize: 100, // 自己设置最小分割大小
      cacheGroups: { // 缓存组
				// 打包第三方库
        defaultVendors: {
          test: /[\\/]node_modules[\\/]/, // 正则匹配第三方库文件
          priority: -10, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
					name: 'vendors' // 打包后的文件名
        },
				// 打包公共模块
        default: {
          minChunks: 2, // 被超过两个模块引用,才会被打包(可以去掉)
          priority: -20, // 优先级
          reuseExistingChunk: true, // 如果一个模块已经被打包过了,那么这个模块也不会被打包
        },
      },
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值