拆分打包的文件

页面引入了第三方库(eg:jquery文件), 没有配置SplitChunksPlugin(在插件中,直接使用不需安装)时,打包时会把入口文件和jquery文件打包在一个文件里

  • 在出口文件中 要配置 chunkFilename

1 单个入口文件

 entry: "./src/main.js",
  output: {
        filename: "js/[name].js",
        chunkFilename:"js/chunk-[id].js",//此选项决定了非入口(non-entry) chunk 文件的名称
    },
 optimization: {
        splitChunks: { //主要就是根据不同的策略来分割打包出来的bundle
          cacheGroups:{
              vendor:{
                  priority:1,//优先级
                  test: /[\\/]node_modules[\\/]/,//识别node_modulse文件
                  chunks:"initial",//从入口文件开始识别(寻找引入的文件有哪些) 其他取值- all、sync
                  minSize:0,//定义能够打包的文件(第三方库)大小的最小值 kb,eg:1024
                  minChunks:1,//文件被引入几次,才会被打包拆分 一般设置 2 
              }
          }
        }
      }

2 多个入口文件 (完整写法)

  • 添加 chunks
 const htmlWebpackPlugin = require("html-webpack-plugin")
const { CleanWebpackPlugin } = require("clean-webpack-plugin")
module.exports = {
    //多个入口文件
    entry: {
        page1: "./src/entry/page1.js",
        page2: "./src/entry/page2.js",
        page3: "./src/entry/page3.js"
    },
    output: {
        filename: "js/[name].js",
        chunkFilename: "js/verdor/chunk-[name].js",//此选项决定了非入口(non-entry) chunk 文件的名称
    },
    plugins: [
        new htmlWebpackPlugin({
            filename: "page1.html", //多个模板时加上filename
            template: "./public/page1.html",
            chunks: ["page1"],//添加chunks 会引入对应的入口文件的内容
        }),
        new htmlWebpackPlugin({
            filename: "page2.html", //多个模板时加上filename
            template: "./public/page2.html",
            chunks: ["page2"],//添加chunks 会引入对应的入口文件的内容
        }),
        new htmlWebpackPlugin({
            filename: "page3.html", //多个模板时加上filename
            template: "./public/page3.html",
           chunks: ["page3"],//添加chunks 会引入对应的入口文件的内容
        }),
        new CleanWebpackPlugin()
    ],
    //页面引入了第三方库(eg:jquery文件), 没有配置SplitChunksPlugin(在插件中,直接使用不需安装)时,打包时会把入口文件和jquery文件打包在一个文件里
    //然后在出口文件中 也要配置 chunkFilename 
    optimization: {
        splitChunks: { //主要就是根据不同的策略来分割打包出来的bundle
            chunks: "initial",
            minSize: 0,
            cacheGroups: {
                vendor: { //配置的第三方库
                    priority: 1,//优先级
                    test: /[\\/]node_modules[\\/]/,//识别node_modulse文件
                    //   chunks:"initial",//从入口文件开始识别(寻找引入的文件有哪些) 其他取值- all、sync
                    //   minSize:0,//定义能够打包的文件(第三方库)大小的最小值 kb,eg:1024
                    //   minChunks:1,//文件被引入几次,才会被打包拆分 一般设置 2 
                    name: "vendor",//任意起
                    minChunks:1
                },
                common: { //公共的部分 名字任意
                    priority: -10,//比node_modules的优先级低 (比1小就行),
                    minChunks: 2,
                    name: "common"
                }
            }
        }
    }
}
//vue 的配置
optimization: {
    splitChunks: {
      cacheGroups: {
        vendors: {
          name: 'chunk-vendors',
          test: /[\\/]node_modules[\\/]/,
          priority: -10,
          chunks: 'initial'
        },
        common: {
          name: 'chunk-common',
          minSize: 0,
          minChunks: 2,
          priority: -20,
          chunks: 'initial',
          reuseExistingChunk: true
        }
      }
    }
  }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值