我有一个项目,有两个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.0
的bar
包将被foo
覆盖。