Webpack 2 CommonsChunkPlugin供应商包

时间:2017-02-24 01:25:40

标签: webpack webpack-2

Webpack 2与CommonsChunkPlugin相关的问题/澄清。

{
    entry: {
        app: './src/app.ts',
        vendor: ['some-third-party-lib', 'another-third-party-lib']
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].js'
    },
    plugins: [
        new webpack.optimize.CommonsChunkPlugin({
            name: 'vendor',
            minChunks: Infinity
        })  ]
}

据我了解,CommonsChunkPlugin将入口点之间共享的公共代码分解为单独的包。在上面的代码段中,它会说"在我的入口点之间给我所有共享代码' app'和'供应商'"并将它们放在vendor块/文件中。由于vendor既是入口点又是共享块,结果是我的所有第三方库都以1个文件(vendor.js)结尾。我能正确理解吗?

1 个答案:

答案 0 :(得分:0)

根据文档,minChunks的{​​{1}}选项配置以下内容:

  

在将模块移入公共块之前需要包含模块的最小块数。

     

传递CommonsChunkPlugin只会创建公共块,但不会移动任何模块。

src:https://webpack.js.org/plugins/commons-chunk-plugin/#options

在您的示例中,Infinity只会提取CommonsChunkPlugin入口点中指定的块,并且它不会自动检测其他共享块。如果删除了vendor选项,插件将自动包含所有入口点引用的块。在这种情况下,您只有两个入口点,因此不会产生任何影响。