Nic*_*ick 8 javascript node.js angularjs webpack commonschunkplugin
我想将我的供应商代码分成两个块,一个包含所有角度库,另一个包含其他所有内容.
我的角度应用程序有一个入口点,设置如下:
entry: {
    app: './path_to/app.js',
    vendor: ['jquery', 'moment', 'numeral'],
    'vendor.angular': ['angular', 'angular-route', 'angular-numeraljs']
}
然后我使用CommonsChunkPlugin配置另外两个bundle:
new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor',
    chunks: ['app'],
    warnings: false,
    filename: 'vendor.bundle.js'
})
new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor.angular',
    chunks: ['app'],
    warnings: false,
    filename: 'vendor.angular.bundle.js'
})
这会生成3个文件:
Version: webpack 1.13.1
Time: 12719ms
                   Asset     Size  Chunks             Chunk Names
           app.bundle.js  19.2 kB       0  [emitted]  app
        vendor.bundle.js   484 kB       1  [emitted]  vendor
vendor.angular.bundle.js   652 kB       2  [emitted]  vendor.angular
   [0] multi vendor.angular 124 bytes {2} [built]
   [0] multi vendor 88 bytes {1} [built]
    + 124 hidden modules
app.bundle.js只包含我的应用代码.
vendor.bundle.js包含所有第三方库,不包括有角度的东西
vendor.angular.bundle.js包含所有有角度的东西以及所有我的第三方库已经在vendor.bundle.js中.
反正有没有将必要的角度模块捆绑在vendor.angular.bundle.js中,而不自动包含其他第三方库?
想通了这一点:
CommonsChunkPlugin 在 plugins 数组中的顺序。
为了获得所需的“分块”,这是我必须进行的更改:
更新后的 CommonsChunkPlugins 现在看起来像:
new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor.angular',
    chunks: ['app'],
    warnings: false,
    filename: 'vendor.angular.bundle.js'
})
new webpack.optimize.CommonsChunkPlugin({
    name: 'vendor',
    chunks: ['vendor.angular'],
    warnings: false,
    filename: 'vendor.bundle.js'
})
以上现在产生:
Version: webpack 1.13.1
Time: 7451ms
                   Asset     Size  Chunks             Chunk Names
           app.bundle.js  19.2 kB       0  [emitted]  app
        vendor.bundle.js   484 kB       1  [emitted]  vendor
vendor.angular.bundle.js   221 kB       2  [emitted]  vendor.angular
   [0] multi vendor.angular 124 bytes {2} [built]
   [0] multi vendor 88 bytes {1} [built]
    + 124 hidden modules
跑步:
webpack --progress --display-modules --display-chunks -v
我能够验证所有与角度相关的模块现在都在 vendor.angular.bundle.js 中,并且所有非角度模块确实在 vendor.bundle.js 中
| 归档时间: | 
 | 
| 查看次数: | 2878 次 | 
| 最近记录: |