创建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 effect
minSize: 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";
依赖关系:
pageA
utility1
utility2
pageB
utility2
utility3
pageC
utility2
utility3
打包后的文件
vendor
vendor1
vendor2
common
utility2
utility3
pageA
pageA
utility1
pageB
pageB
pageC
pageC