创建vendor chunk 和多入口公用的common chunk 。
共有三个入口_pageA, pageB, pageC 。_这三个入口公用一些模块,以下配置会把至少有两个入口公用的模块单独打包,同时node_modules里的模块也单独打包。
webpack.config.js
var path = require("path");module.exports = {// mode: "development" || "production",entry: {pageA: "./pageA",pageB: "./pageB",pageC: "./pageC"},optimization: {chunkIds: "named",splitChunks: {cacheGroups: {commons: {chunks: "initial",minChunks: 2,maxInitialRequests: 5, // The default limit is too small to showcase the effectminSize: 0 // This is example is too small to create commons chunks},vendor: {test: /node_modules/,chunks: "initial",name: "vendor",priority: 10,enforce: true}}}},output: {path: path.join(__dirname, "dist"),filename: "[name].js"}};
pageA.js
var vendor1 = require('vendor1');var utility1 = require('./utility1');var utility2 = require('./utility2');module.exports = "pageA";
pageB.js
var vendor2 = require('vendor2');var utility2 = require('./utility2');var utility3 = require('./utility3');module.exports = "pageB";
pageC.js
var utility2 = require('./utility2');var utility3 = require('./utility3');module.exports = "pageC";
依赖关系:
pageAutility1utility2
pageButility2utility3
pageCutility2utility3
打包后的文件
vendorvendor1vendor2
commonutility2utility3
pageApageAutility1
pageBpageB
pageCpageC
