两个NPM包提取同一个包的两个不同版本-我如何修复哪个包使用哪个



我有一个项目,有两个npm包(我们称之为a和B),它们带来了同一npm包的两个不同版本(称之为C)。现在,由于我不知道的原因,当我同时使用a和B时,C的版本会根据我首先定义的内容而变化,例如:

import { defineCustomElements as A} from '@A/A/dist/loader';
import { defineCustomElements as B} from '@B/B/dist/loader';
// This is where things are weird
// the order in which I put A() and B() below 
// somehow defines which version of C to use
A()
B()

问题:我如何使A使用它所拉的C版本,并同样用于B?

我试过:我仔细检查了A和B的不同版本,试着在谷歌上搜索npm是如何决定使用哪个版本的重复依赖项的,但它并没有真正让我取得进展。。。我看到了提到npm别名的答案——尽管我不明白如果C和A&B.

https://www.stefanjudis.com/today-i-learned/how-to-override-your-dependencys-dependencies/

假设您的一个依赖项(第一级)依赖于另一个包含过时的其他依赖项(第二级)的依赖项。除了分叉和修复一级依赖之外,还没有一种简单的方法可以控制node_modules树下的嵌套依赖版本。

your-project
|_ some-module @1.0.0
|_ another-module-which-should-be-updated @1.0.0

现在,您可以在package.json中指定覆盖属性来覆盖和强制执行嵌套的依赖关系版本。

{
"overrides": 
{
"bar@2.0.0": 
{
"foo": "1.0.0"
}
}
}

因此,版本为2.0.0bar包将被foo覆盖。

相关内容

最新更新