2017-03-14 8 views
1

Webpack 2の新機能です。バンドルを作成すると、いくつかのモジュールがバンドル間で複製されます。 、どんなに私は何をすべきかWebpack 2バンドル間でモジュールを複製していますか?

// Angular 
import '@angular/platform-browser'; 
import '@angular/platform-browser-dynamic'; 
import '@angular/core'; 
import '@angular/common'; 
import '@angular/http'; 
import '@angular/router'; 

// RxJS 
import 'rxjs'; 

rxjs(そしておそらく他のモジュール、私はさらにチェックしていない)間で重複している:

module.exports = { 
    node: { 
     fs: "empty" 
    }, 
    context: __dirname, 
    entry: { 
     "vendor": "./src/vendor-bundle-config.ts", 
     "app" : "./src/app/app.module" 
    }, 
    output: { 
     filename: '[name].js', 
     path: './' 
    } 
} 

と私のベンダーバンドル-config設定:ここに私のWebPACKの設定です両方のバンドル。奇妙なことに、私はこのすべてを非常に基本的なAngularプロジェクトでテストしています.AppComponentがあり、それだけです。 rxjsが現在参照されているのはpackage.jsonvendor-bundle-config

です。私はCommonsChunkPluginを設定しようとしましたが、何もしていないようです。それが私がさらに調べなければならないかどうかはわかりません。

EDIT:

new webpack.optimize.CommonsChunkPlugin({ 
    name: "commons", 
    filename: "commons.js", 
}) 

これはWebPACKのドキュメントの例からである:ここで私はそれを思い出すことができる最高のようCommonsChunkPluginための設定です。

何が間違っていますか/間違っていますか?

ありがとうございました。

+0

'CommonsChunkPlugin'設定を表示してください。 – wuxiandiejia

+0

私はもはやCommonsChunkPlugin設定を持っていませんが、上記のポストを、Webpackのドキュメンテーションの例に基づいて思い出したもので更新しました。 – TimTheEnchanter

答えて

0

プラグインのnameオプションは、エントリから切り離したいチャンクの名前です。したがって、それをvendorに変更してください。詳細は、code splittingを参照してください。

1

CommonsChunkPlugin設定でminChunksオプションが欠けていました。

new webpack.optimize.CommonsChunkPlugin({ 
    name: "commons", 
    filename: "commons.js", 
    minChunks: 2  <-- this is what I was missing 
}) 
+0

どのようにAngular CLIを使用していないのですか? Angualr v5では、コード分割は、Routeパスの構文を変更して実装するのが簡単です – Ryan

関連する問題