我处于一种独特的情况,我需要将我的捆绑包分成单独的文件,但随着应用程序的增长和新增,我无法随时掌握文件总数或文件名称的变化已安装依赖项等
以下配置是错误的,但我认为它将说明我想要完成的最好的事情。我已经阅读了所有文档,但似乎无法在这些方面找到任何内容。
optimization: {
splitChunks: {
react: {
test: /node_modules\/react/
},
vendor: {
test: /node_modules\/(?!react)/
},
svgIcons: {
test: /src\/js\/components\/icons/
},
}
}
目的是我们最终得到以下4个捆绑包:
react.bundle.js - Contains all react-related dependencies
vendor.bundle.js - Contains all other vendor files from node modules
svgIcons.bundle.js - Contains a group of app component files that match my test
bundle.js - The default bundle containing everything else.
有没有办法做到这一点?
经过一番挖掘后,我终于弄明白了。从本质上讲,这就是您所需要的:
首先,在output
对象中......
output: {
filename: "[name].js"
}
您需要[name]
变量,否则您的捆绑包将无法获取正确的名称。
接下来,在optimization
对象中......
optimization: {
splitChunks: {
cacheGroups: {
react: {
chunks: 'initial',
name: 'react',
test: /node_modules\/react/,
enforce: true,
},
vendor: {
chunks: 'initial',
name: 'vendor',
test: /node_modules\/(?!react)/,
enforce: true,
},
icons: {
chunks: 'initial',
name: 'icons',
test: /src\/js\/components\/icons/,
enforce: true,
},
},
},
},
结果如下:
react.js
vendor.js
icons.js
bundle.js