我正在使用:
"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引用RxJ的正确方法是什么,因为它不会在导入它的每个模块中重复?
答案 0 :(得分:0)
这些来自您的第三方依赖包,这些依赖包内部依赖于var extent = map.getView().calculateExtent(map.getSize());
,而不是您作为依赖包rxjs
添加的依赖包。您可以清楚地看到其他{strong>第三方软件包中的重复(rxjs)
框。
因此它们将被导入rxjs
捆绑包内的重复项(不能说重复项,因为它们可能因rxjs
中的子模块而异)。
答案 1 :(得分:0)
好吧...感谢Amit Chigadani的回答,我开始怀疑我对DLLPlugin的理解是错误的。我将其视为CommonChunkPlugin ,能够对模块进行重复数据删除并交叉引用它们。 <,我错了。 因此,我最终完成了两次DllPlugin传递:一次传递给共享库,一次传递给使用它们的框架,重用先前生成的清单文件..看来可行!
它提供了许多额外的构建配置功能,但它仍然有效(直到现在...)!