は私がlodash、瞬間、axiosを含むサードパーティのモジュールの多くを使用するリッチアプリケーションを、持っている想像し、はを反応させます。のWebPACK 2:別のファイルに分割するライブラリ、ベンダーやアプリ
最後にすべてを1つのバンドルにバンドルすると、サイズは1MBより大きくなります。
私はそれが格納されている方法で私のライブラリをパックするのWebPACK、欲しい:
- lodashは別途
- 瞬間別途
- 他のすべてのnode_modulesは、ベンダーの下に格納されていますバンドル
- アプリケーションのコードは別ファイル に保存されています
私はCommonsChunkPluginでプレーしようとしましたが、私は欲しい結果を受け取ったことがありません。
私は私の問題を説明するために例のリポジトリを用意しました。ここで https://github.com/PavelPolyakov/webpack-react-bundles
WebPACKのエントリの一部(conf/webpack.base.config.js):
entry: {
lodash: 'lodash',
moment: 'moment',
app: [
'react-hot-loader/patch',
'webpack-dev-server/client?http://localhost:3001',
'webpack/hot/only-dev-server',
'./app/index.js']
}
は、モジュールを分離しようとすると、生産の設定(conf/webpack.production.config.js)です:
plugins: [
new webpack.DefinePlugin({
'process.env': {
'NODE_ENV': JSON.stringify('production')
}
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: function (module) {
// this assumes your vendor imports exist in the node_modules directory
return module.context &&
module.context.indexOf('node_modules') !== -1;
}
}),
new webpack.optimize.UglifyJsPlugin({
minimize: true,
compress: {
warnings: true
}
})]
このケースでは、瞬間とロダッシュは引き続き販売業者に表示されますまたはバンドル。私はそれらを2つの別々のバンドルに入れたいと思っています。
感謝しています。
CommonsChunkPluginのインスタンスを2つ使用してみましたか?名前は「lodash」、もう1つは「moment」ですか?あるいは、[docs](https://webpack.js.org/guides/code-splitting-libraries/)のように '' lodash ''、 'webpack' ''という名前があります。 – opatut
はい、私は試しましたが、それは助けになりません。あるいは私は間違った方法でそれを試しました。 –