webpack 2跨bundle复制模块



我是Webpack 2的新手。这是我的webpack配置:

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

和我的供应商捆绑面:

// 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(也许还有其他模块,我还没有进一步检查)在两个捆绑包中都重复了。奇怪的是,我正在使用一个非常基本的Angular项目测试所有内容 - 它具有AppComponent,仅此而已。当前引用的唯一位置RXJ在package.jsonvendor-bundle-config

我已经尝试配置Commonschunkplugin,但似乎没有做任何事情。我不确定这是否应该进一步研究。

编辑:这是Commonschunkplugin的配置,因为我能记得它:

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

这是来自WebPack文档示例。

我想念/做错了什么?

谢谢。

弄清楚了。我在Commonschunkplugin配置中缺少Minchunks选项。它需要看起来像这样可以工作:

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

插件的 name选项是要与条目分开的块名称。因此,将其更改为 vendor。有关更多详细信息,请参见代码分配。

最新更新