NodeJs Package.json无限recursion依赖

这是我一直在琢磨的一个问题。 有没有可能是一个Node项目可能会遇到recursion和无限的包依赖? 我的意思是以下。

假设主应用程序在Package.json依赖部分列出了软件包A. 反过来,假设这个包A依赖于包B.也就是说, node_modules/A/Package.json将在依赖部分包含B.

现在,假设事件的一个疯狂的组合,包B依赖于另一个包C(C!= A),然而,它具有A作为它的依赖。 澄清,

 node_modules/A/node_modules/B/package.json - contains C as dependency node_modules/A/node_modules/B/node_modules/C/package.json - contains A as dependency 

我的问题是双重的。 首先,这种情况在实践中甚至是可能的吗? 其次,如何解决? 在我看来, npm install将发送这个应用程序无限循环的安装。

OP:有没有可能Node项目可能会遇到recursion和无限的包依赖?

没有。

从文档化的algorithm中 ,随着依赖关系树的走向,“依赖关系将尽可能靠近顶部添加”。

在该页面上给出的例子说,如果你有一个依赖于包B和包C的包A,而包B也依赖于包C,那么包B中的依赖将通过已经为包A安装的副本来解决。

所以,在你的例子中,包C对A的依赖将由主应用程序对A的依赖来满足。不需要再去获取它。

然而,当你开始遇到依赖关系,而这些依赖关系已经满足了不同版本的依赖关系的时候,事情会变得有点棘手。 事实上,该网页的下一部分具体谈到这一点:

npm flat-out拒绝安装已经存在于包文件夹祖先树中任何地方的任何name @版本

他们确实给了这个recursion依赖安装的东西一些想法 。