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

2jcobegt  于 2022-11-14  发布在  其他
关注(0)|答案(1)|浏览(155)

我有一个项目,有两个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也使用C的版本?
**我试过了:**我仔细检查了A和B的不同版本,试着在谷歌上搜索npm如何决定使用哪个版本的重复依赖项,但没有任何结果......我看到了提到npm别名的答案--尽管我不知道如果C与A和B沿着被拉出来该如何操作。

9lowa7mx

9lowa7mx1#

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属性,以覆写并胁迫执行巢状相依性版本。

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

因此2.0.0版本的bar软件包将被foo覆盖。

相关问题