Angular 5 Webpack 4 Rxjs 5 DllPlugin-到处都有重复的RxJ

时间:2018-06-22 11:20:50

标签: angular webpack rxjs dllplugin

我正在使用:

"webpack": "4.12.0",    
"rxjs": "5.5.9",
"@angular" : "5.2.11"

并使用DDL插件捆绑库。

{
    entry: 
    {"rxjs_5_5_9": [
      "rxjs
    ],
    "angular_5_2_11": [
      "@angular/common",
      "@angular/compiler",
      "@angular/core",
      "@angular/http",
      "@angular/platform-browser",
      "@angular/platform-browser-dynamic",
      "@angular/router",
      "@angular/service-worker",
      "zone.js"
    ], (...) , "pck_libs_5_x_x": [
      "pck-referentiel"
    ]},
    output: {
      filename: "[name].bundle.js",
      path: TARGET_PATH + "/vendors/",
      library: '[name]_lib'
    },
    plugins: [
      new webpack.DllPlugin({
        context: '.',
        name: '[name]_lib',
        path: TARGET_PATH + "/vendor-[name]-manifest.json",
      }),
    ]
  };

如上所述,我已经将Rxjs声明为单独的包。 我的自定义库pck-referentiel使用rxjs,并在99%的时间内将其导入:

import {Observable} from "rxjs/Rx";

这是结果:

enter image description here

(我圈出了每个重复的rxjs)

我们可以清楚地看到rxjs分散在包括我的所有所有第三方库中。

用DllPlugin引用RxJ的正确方法是什么,因为它不会在导入它的每个模块中重复?

2 个答案:

答案 0 :(得分:0)

这些来自您的第三方依赖包,这些依赖包内部依赖于var extent = map.getView().calculateExtent(map.getSize()); ,而不是您作为依赖包rxjs添加的依赖包。您可以清楚地看到其他{strong>第三方软件包中的重复(rxjs)框。

因此它们将被导入rxjs捆绑包内的重复项(不能说重复项,因为它们可能因rxjs中的子模块而异)。

答案 1 :(得分:0)

好吧...感谢Amit Chigadani的回答,我开始怀疑我对DLLPlugin的理解是错误的。我将其视为CommonChunkPlugin ,能够对模块进行重复数据删除并交叉引用它们。 <,我错了。 因此,我最终完成了两次DllPlugin传递:一次传递给共享库,一次传递给使用它们的框架,重用先前生成的清单文件..看来可行!

它提供了许多额外的构建配置功能,但它仍然有效(直到现在...)!