Angular 5 Webpack 4 Rxjs 5 DllPlugin - 到处都是重复的 RxJ
Angular 5 Webpack 4 Rxjs 5 DllPlugin - Duplicated RxJs everywhere
我正在使用:
"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 的正确方法是什么,这样它就不会在导入它的每个模块中重复?
那些来自您的第三方依赖包,它们在内部依赖于rxjs
而不是您添加为依赖包(rxjs)
的那个。您可以清楚地看到重复的 rxjs
装在其他 第三方 包裹中。
因此它们将在 vendor
包中重复导入(不能说重复,因为它们可能因 rxjs
内的子模块而异)。
好的...感谢Amit Chigadani 的回答,我开始怀疑我对DLLPlugin 的理解是错误的。我 将其视为 CommonChunkPlugin,能够删除重复模块并交叉引用它们。唉,我错了。
所以我最终做了两个 DllPlugin pass:一个用于共享库,一个用于使用它们的框架,重用以前生成的清单文件..它似乎有效!
它提供了很多额外的构建配置工作,但它仍然有效(直到现在...)!
我正在使用:
"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 的正确方法是什么,这样它就不会在导入它的每个模块中重复?
那些来自您的第三方依赖包,它们在内部依赖于rxjs
而不是您添加为依赖包(rxjs)
的那个。您可以清楚地看到重复的 rxjs
装在其他 第三方 包裹中。
因此它们将在 vendor
包中重复导入(不能说重复,因为它们可能因 rxjs
内的子模块而异)。
好的...感谢Amit Chigadani 的回答,我开始怀疑我对DLLPlugin 的理解是错误的。我 将其视为 CommonChunkPlugin,能够删除重复模块并交叉引用它们。唉,我错了。 所以我最终做了两个 DllPlugin pass:一个用于共享库,一个用于使用它们的框架,重用以前生成的清单文件..它似乎有效!
它提供了很多额外的构建配置工作,但它仍然有效(直到现在...)!