我有一个依赖于其他软件包的应用程序,其中许多软件包都有自己的依赖项。我的应用可能依赖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
,那么这也不会因为生产包中出现两次相同的程序包代码而结束。如果我错了,请纠正我。
答案 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如何决定抓取您的依赖树,很难真正知道哪一个将是最后加载的那个。
希望这有帮助!