2017-05-15 5 views
0

ウェブパックは、すでにwebpackにバンドルされているパッケージを削除しますか?ウェブパックデュプリュウェブパックバンドル

例えば、 | Webpack bundle 1 | |------------------| | [email protected] | | [email protected] |

| Webpack app bundle | |--------------------| | [email protected] | | [email protected] | | Webpack bundle 1 |

ウィルWebPACKのアプリバンドル[email protected]の2のコピーが含まれていますか? Webpackアプリバンドルにはjqueryの2つのコピーが含まれますか?

答えて

0

あなたがwebpackに与える設定が原因です。 2つのエントリーポイントが相互に通信しておらず、jqueryとreactの両方をインポートしているので、答えがyesの場合、両方のバンドルにこれらのライブラリがあります。ただし、CommonsChunkPluginを使用して簡単にベンダーバンドルを作成できます。ここでは、両方のエントリポイントによって消費される分離チャンク内のベンダー・モジュールを配置する方法の例です。このように

new webpack.optimize.CommonsChunkPlugin({ 
    name: "vendor", 
    minChunks: function (module) { 
    return module.context && module.context.indexOf("node_modules") !== -1; 
    } 
}) 

、node_modules内のすべてのモジュールは、ベンダーと呼ばれるバンドル内部でエクスポートされます。

+0

ありがとうございます。バンドル1を制御できないと仮定しましょう。私の1つのエントリポイントは、Webpackアプリケーションバンドルです。 – Matt

+0

最初のバンドルを制御できない場合、webpackは一部のベンダーが既に最初のバンドルの内側にあることを認識しません。私が提案できるのは、**最初のバンドル**の中で 'expose-loader'([link](https://github.com/webpack-contrib/expose-loader))を使い、必要なベンダーをウィンドウオブジェクト。 ** 2番目のバンドル**内の 'externals'([link](https://webpack.js.org/configuration/externals/#externals))オプションを使用することができます** – Ematipico

+0

http: /stackoverflow.com/questions/42248952/using-react-components-bundled-with-webpack-causes-duplication-of-submodules < - 私はこの投稿が私の質問に答えると思います。モジュールが既にwebpackにバンドルされている場合は、モジュールをデパイプするためにアンバンドルする方法はないと思います。 – Matt