2016-06-13 20 views
8

Ho due parti indipendenti dell'applicazione che sono suddivise in pacchetti "app" e "fornitore".Webpack: come utilizzare CommonsChunkPlugin con più bundle splittati

voci 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') 
}, 

e plugin:

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 
    }) 
] 

con un solo 'cliente-app' e 'cliente-vendor' o 'admin-app' e 'admin-vendor' e singolo CommonsChunkPlugin funziona perfettamente, genera 2 pacchi (app & vendor) ma con questa coppia non riesce con l'errore:

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) 

Come posso farlo bene?

risposta

4

Ho avuto lo stesso requisito e l'ho risolto dividendo la configurazione in due e fornendo module.exports con una matrice.

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 
     }) 
    ] 

}] 
+0

Grazie! Funziona! – unclechu

Problemi correlati