SplitChunksPlugin 配置参数 2

我们继续上篇,探索一下splitChunks 的配置。

我们在项目的 src 下新建一个文件 test.js 导出一个很少的内容,如下。

export default {
    name: 'Me a Test'
}

然后我们将入口index.js 文件改为这样:

import test from './test'
console.log(test.name)

运行打包命令,由于webpack.config.js 中 optimizaiton.splitChunks.minSize 为 30000(30kb),因此肯定是不会进行代码分割的。

我们将minSize 设为 0. 打包,发现,仍无法将test.js 分割。

这是因为,对于同步引入代码,会继续往下查看配置,到cacheGroups, 而cacheGroups 中test.js 不符合vendors 组的要求(test 不匹配),那么它会转向default,但我们default 配置的是false 。因此test.js 就无法知道它的去向了。因此,我们配置一下default ,将官网default 的配置拷贝下来(不用minChunks)。如下。

  optimization: {
    splitChunks: {
      chunks: 'all',
      minSize: 0,
      maxSize: 0,
      minChunks: 1,
      maxAsyncRequests: 5,
      maxInitialRequests: 3,
      automaticNameDelimiter: '~',
      name: true,
      cacheGroups: {
        vendors: {
          test: /[\\/]node_modules[\\/]/,
          priority: -10,
          filename: "vendors.js"
        },
        default: {
          priority: -20,
          reuseExistingChunk: true
        }
      }
    }
  },
运行打包命令,结果如下。

test.js 就打包在default~main.js 中。

同理,也可以给它一个filename 属性,让它都打包到common.js 文件里,如下。

      cacheGroups: {
        vendors: {
          test: /[\\/]node_modules[\\/]/,
          priority: -10,
          filename: "vendors.js"
        },
        default: {
          priority: -20,
          reuseExistingChunk: true,
          filename: "common.js"
        }
      }

下一个属性,maxSize,它是对要分割的代码,进行大小判断,如果该文件大小大于它的值,webpack 就尝试对该文件再进行分割。

下一个属性,minChunks,它代表一个模块至少用到多少次的时候才会对其进行分割。

下一个属性,maxAsyncRequests,它代码同时加载的最大模块数。当webpack 遇到这个参数时,假设它为5,那么在打包过程中遇到前5个需要分割的文件,它会进行分割,后面的就不进行分割了。

下一个属性,maxInitialRequests,它代表整个网站首页进行加载的时候,或者入口文件进行加载的时候,入口文件中可能会引入其他的js 文件或库,那么入口文件进行代码分割它的可分割数为该项配置值。

下一个属性,automaticNameDelimiter,它代码名字之间的连接符。

下一个属性,cacheGroups,缓存组。当我们不配置这个属性时,当我们import 多个库,比如jquery, lodash 时,进行代码分割,是会分别放入两个文件中的。但我们配置了cacheGroups 时,如上。它就会在打包时,先将要分割的代码缓存到vendor 组或者default 组,再一起打包成一个文件。其中 priority 属性,是指,当一个文件满足两个以上的组的时候,那个组的priority 越大那么它的优先级越高,就会判断进那个组。其中 reuseExistingChunk 属性,是指,当一个模块已经被打包过,那么它在其他文件中需要再次引入时,可以复用之前打包的文件。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值