具有NPM和依赖项的奇数行为

具有NPM和依赖项的奇数行为,npm,Npm,NPM似乎有一个奇怪的行为,它依赖于包名(按字母顺序)来决定安装什么 例如,如果我有以下设置: A depends on C@2.1.0 B depends on C@2.x C@2.1.0 and C@2.2.0 are published 我将安装以下程序 A B C@2.1.0 自C@2.1.0也满足2.x 现在,如果我把它们翻过来: A depends on C@2.x B depends on C@2.1.0 我有一种非常讨厌的行为: A B - C@2.1.0 C@2.2.0

NPM似乎有一个奇怪的行为,它依赖于包名(按字母顺序)来决定安装什么

例如,如果我有以下设置:

A depends on C@2.1.0
B depends on C@2.x
C@2.1.0 and C@2.2.0 are published
我将安装以下程序

A
B
C@2.1.0
自<代码>C@2.1.0也满足
2.x

现在,如果我把它们翻过来:

A depends on C@2.x
B depends on C@2.1.0
我有一种非常讨厌的行为:

A
B
- C@2.1.0
C@2.2.0
A
首先得到处理,因为它是按字母顺序排列的第一个,所以它得到
C@2.2.0
,满足其条件的最新版本。当它到达
B
时,
2.2.0
不满足
2.1.0
,因此
B
得到
C@2.1.0
,我现在有一个副本

它本质上是相同的设置,但只是依赖包的名称会影响它的处理方式

npm重复数据消除
在这种情况下似乎也没有效果

有没有一种方法可以防止这种情况发生,并始终从第一个场景中获得结果