Webpack:如何使用CommonsChunkPlugin和多个拆分包

unc*_*chu 8 javascript webpack

我有两个独立的应用程序部分,它们都分为"app"和"vendor"捆绑包.

Webpack条目:

entry: {
    'client-app': path.join(BASE_DIR, 'front-end-sources', 'client', 'scripts', 'main.ls'),
    'client-vendor': path.join(BASE_DIR, 'front-end-sources', 'client', 'scripts', 'vendor.ls'),
    'admin-app': path.join(BASE_DIR, 'front-end-sources', 'admin', 'scripts', 'main.ls'),
    'admin-vendor': path.join(BASE_DIR, 'front-end-sources', 'admin', 'scripts', 'vendor.ls')
},
Run Code Online (Sandbox Code Playgroud)

和插件:

plugins: [
    new ExtractTextPlugin('[name].bundle.css'),
    new webpack.optimize.CommonsChunkPlugin({
        names: ['client-app', 'client-vendor'],
        minChunks: Infinity
    }),
    new webpack.optimize.CommonsChunkPlugin({
        names: ['admin-app', 'admin-vendor'],
        minChunks: Infinity
    })
]
Run Code Online (Sandbox Code Playgroud)

只需"客户端应用程序"和"客户端供应商"或"管理员应用程序"和"管理员供应商"以及单个CommonsChunkPlugin,它就可以完美运行,它可以生成2个捆绑包(应用程序和供应商),但是这些对失败并出现错误:

ERROR in CommonsChunkPlugin: While running in normal mode it's not allowed to use a non-entry chunk (admin-app)
ERROR in CommonsChunkPlugin: While running in normal mode it's not allowed to use a non-entry chunk (admin-vendor)
Run Code Online (Sandbox Code Playgroud)

我怎么能做对的?

sqw*_*qwk 4

我有同样的要求,并通过将配置分成两部分并为 module.exports 提供一个数组来解决它。

module.exports = [{
    entry: {
        'client-app': path.join(BASE_DIR, 'front-end-sources', 'client', 'scripts', 'main.ls'),
        'client-vendor': path.join(BASE_DIR, 'front-end-sources', 'client', 'scripts', 'vendor.ls')
    },
    ...
    plugins: [
        new ExtractTextPlugin('[name].bundle.css'),
        new webpack.optimize.CommonsChunkPlugin({
            names: ['client-app', 'client-vendor'],
            minChunks: Infinity
        })
   ]
},
{
    entry: {
        'admin-app': path.join(BASE_DIR, 'front-end-sources', 'admin', 'scripts', 'main.ls'),
        'admin-vendor': path.join(BASE_DIR, 'front-end-sources', 'admin', 'scripts', 'vendor.ls')
    },
    ...
    plugins: [
        new ExtractTextPlugin('[name].bundle.css'),
        new webpack.optimize.CommonsChunkPlugin({
            names: ['admin-app', 'admin-vendor'],
            minChunks: Infinity
        })
   ]

}]
Run Code Online (Sandbox Code Playgroud)