为什么在CommonsChunkPlugin中使用minChunks来提取所有node_modules会产生更大的包?

时间:2017-03-29 23:14:41

标签: webpack

以下是两个用于提取或多或少相同内容的webpack配置:

  1. 通过显式提供从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',
        }),
    ]
    
  2. 这使用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,
        }),
    ]
    
  3. 他们生产不同的捆绑包大小,第二个拥有更大的供应商捆绑包。虽然它有一个较小的应用程序包,但在第二个中总大小仍然更大。

    1. 15KB

    2. 20kB

    3. 我分析了捆绑包,后者似乎包括style-loadercss-loader

      1. 首先,为什么这两个配置会产生不同的捆绑,它们不应该产生完全相同的捆绑吗?为什么在第二个配置中包含style-loadercss-loader(或任何其他加载器?)?

0 个答案:

没有答案