1

我在用着 :

"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";

这是结果:

在此处输入图像描述

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

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

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

4

2 回答 2

0

好的...感谢 Amit Chigadani 的回答,我开始怀疑我对 DLLPlugin 的理解是错误的。我将其视为 CommonChunkPlugin,能够对模块进行重复数据删除并交叉引用它们。唉,我错了。所以我最终做了两个 DllPlugin pass:一个用于共享库,一个用于使用它们的框架,重用以前生成的清单文件.. 它似乎工作!

它提供了许多额外的构建配置工作,但它可以工作(直到现在......)!

于 2018-06-22T13:42:03.557 回答
0

这些来自您的第三方依赖包,它们在内部依赖于rxjs而不是您添加为依赖包的那个(rxjs)。您可以清楚地看到rxjs其他第三方包中的重复框。

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

于 2018-06-22T11:26:25.337 回答