以下是两个用于提取或多或少相同内容的webpack配置:
通过显式提供从node_modules
package.json
entry: {
app: path.join(basePath, 'app.js'),
vendor: Object.keys(packageJson.dependencies)
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
filename: '[name].js',
}),
]
这使用minChunks
提取路径中匹配node_modules
的所有模块(这也是documented way)
entry: {
app: path.join(basePath, 'app.js'),
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: module => module.context && module.context.indexOf('node_modules') !== -1,
}),
]
他们生产不同的捆绑包大小,第二个拥有更大的供应商捆绑包。虽然它有一个较小的应用程序包,但在第二个中总大小仍然更大。
15KB
20kB
我分析了捆绑包,后者似乎包括style-loader
和css-loader
首先,为什么这两个配置会产生不同的捆绑,它们不应该产生完全相同的捆绑吗?为什么在第二个配置中包含style-loader
和css-loader
(或任何其他加载器?)?