2017-09-12 15 views
0

私はJSを最適化していて、1つの主要な部分に固執しています。 CommonChunksPluginを使用してベンダーバンドルを作成しても、すべてのノードモジュールは含まれていません。私はchildren: trueで別のCommonChunksPluginを使用していますが、少し上手くなりますが、すべてをvendor.jsではなくapp.jsに移動します。より頻繁に変更されるので、私はベンダーがキャッシュ可能になり、アプリが小さくなるようにしたいと思います。 ノードモジュールをアプリケーションからベンダーバンドルにどのように取得できますか?私のアナライザの出力と設定は以下の通りです。webpackを使用してノードモジュールをベンダーチャンクに移動

Analyzer output

やプラグインのための私のWebPACKの設定は次のとおりです。

plugins: [ 
    new webpack.ProvidePlugin({ 
     _: "underscore" 
    }), 
    new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), 
    new webpack.optimize.CommonsChunkPlugin({ 
     name: 'vendor', 
     minChunks: (module, count) => { 
     var context = module.context; 
     return count > 1 && context && context.indexOf("node_modules") !== -1 
     } 
    }), 
    new webpack.optimize.CommonsChunkPlugin({ 
     children: true, 
     minChunks: 2 
     // minChunks: (module, count) => { 
     // var context = module.context; 
     // return count > 1 && context && context.indexOf("node_modules") !== -1 
     // } 
    }), 
    new webpack.DefinePlugin({ 
     "process.env": { 
     NODE_ENV: JSON.stringify(process.env.NODE_ENV), 
     API_ROOT_URL: JSON.stringify(settings.api_root_url), 
     APP_ROOT_URL: JSON.stringify(settings.app_root_url), 
     PUSHER_KEY: JSON.stringify(settings.pusher_key), 
     } 
    }) 
] 

答えて

0

私は私の設定で1つのCommonsChunkPluginエントリを持っています。

 new webpack.optimize.CommonsChunkPlugin({ 
      name: "common-bundle", 
      filename: "common-bundle.js", 
      minChunks: function (module) { 
       return module.context && module.context.indexOf("node_modules") !== -1; 
      } 
     }), 
関連する問題