NPM / WebPack如何管理各种版本范围内的重复依赖项?

时间:2018-03-14 03:04:06

标签: javascript npm webpack

我有一个依赖于其他软件包的应用程序,其中许多软件包都有自己的依赖项。我的应用可能依赖package@^1.0.0,而我应用所依赖的其他套餐使用package@^1.5.1。当我编译应用程序进行生产时,我是否会将两个软件包中的代码作为其中的一部分,或仅package@1.5.1(范围内的最新版本)?

package@1.0.0(严格版本)和package@^1.5.1怎么样?

我的假设是,如果我的应用程序依赖于package@^1.0.0并且其中一个程序包依赖于package@1.0.0,那么这也不会因为生产包中出现两次相同的程序包代码而结束。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您对所需版本的严格程度以及它们是否存在冲突。如果它们发生冲突,您最终会在最终捆绑的JS文件中找到这些库的副本。我现在遇到以下package.json要求: Main Project - main-ui-scaffolding-library - componentB-library @^1.3.0 - specialty-component-library - componentB-library @1.2.0

现在在我的bundledJS文件中,我在源代码中找到了两次componentB-library。一次@ ^ 1.3.0和一次@ 1.2.0。它非常令人沮丧,因为包含的最后一个将是变量/ angularjs组件/服务名称引用的那个。根据webpack如何决定抓取您的依赖树,很难真正知道哪一个将是最后加载的那个。

希望这有帮助!