webpack中splitChunk的使用方法

Posted wuxianqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webpack中splitChunk的使用方法相关的知识,希望对你有一定的参考价值。

适合在多入口打包中使用

const path = require(‘path‘)
const webpack = require(‘webpack‘)

module.exports = 
  entry: 
    a: ‘./src/a.js‘,
    b: ‘./src/b.js‘
  ,
  output: 
    path: path.resolve(__dirname, ‘dist‘),
    filename: ‘[name].bundle.js‘,
  ,
  optimization: 
    // async 异步(import()语法) initial(同步import xxx from ‘xxx‘) all(所有)
    splitChunks: 
      chunks: ‘initial‘
    
  

a入口和b入口都引入了jquery,打包时也分别打包到了各自的模块里面,那么我们可以把相同的模块提取出来

 

技术图片

 

还有一些参数,看到那个vendors单词没,默认在这里设置的

  optimization: 
    splitChunks: 
      chunks: ‘initial‘,
      cacheGroups: 
        vendors: 
          test: /[\\\\/]node_modules[\\\\/]/,
          priority: -10
        
      
    
  ,

尝试改成其他名字

  optimization: 
    splitChunks: 
      chunks: ‘initial‘,
      cacheGroups: 
        common: 
          test: /[\\\\/]node_modules[\\\\/]/,
          priority: -10
        
      
    
  ,

出来的是这样的

技术图片

可以定义很多个规则

 

比如我们想react和react-dom打一个包,vue和vuex打一个包

  optimization: 
    splitChunks: 
      chunks: ‘initial‘,
      cacheGroups: 
        vue: 
          test: /[\\\\/]node_modules[\\\\/](react|react-dom)/,
          priority: -1
        ,
        react: 
          test: /[\\\\/]node_modules[\\\\/](vue|vuex)/,
          priority: -2
        
      
    
  ,

技术图片

默认引入的node_modules提取的的公共文件叫做vendors命名

可以自定义处理不同模块,要写priority,默认是-10,按照数字大的处理。

以上是关于webpack中splitChunk的使用方法的主要内容,如果未能解决你的问题,请参考以下文章

webpack4.0各个击破—— Javascript & splitChunk

Webpack项目优化之CDN加速Gzip压缩和SplitChunks拆分

理解webpack4.splitChunks之其余要点

Webpack:optimization.splitChunks.chunks 中的“all”和“initial”选项有啥区别

错误:webpack.optimize.CommonsChunkPlugin 已被移除,请改用 config.optimization.splitChunks

迁移到webpack4:从webpack.optimize.CommonsChunkPlugin到config.optimization.splitChunk,以及有个搜出来的中文解决办法是错的