npm:孩子的依赖来自哪里?

我在github上读到 :

grunt-mocha-test使用npm的Peer Dependenciesfunction

我不确定什么是“同辈依赖”,所以我检查了npm文档,发现:

作为一个包pipe理器,npm是非常棒的。 特别是,它很好地处理了子依赖:如果我的包依赖于请求版本2和其他库

我的意思是:

  1. 具有“同等依赖性”意味着依赖性可能需要其他依赖性才能正常工作。
  2. npm创build一个类似于结构的树,其中依赖关系是根,并且根依赖关系具有子依赖关系

我留下的问题是:

儿童依赖从何而来? 他们是复制的吗? 还是它们引用了package.json中已经存在的其他依赖项?

他们每个人都将有一个包的副本。 例如,如果你有一个项目与这些依赖关系:

"dependencies": { "node-handlebars": "*", "less-file": "*", "async-ls": "*", "promise": "4.0.0" } 

并运行npm install ,你会得到4个promise (你声明的一个依赖和另外3个需要的其他依赖)

 $ find . -name promise ./node_modules/async-ls/node_modules/promise ./node_modules/promise ./node_modules/node-handlebars/node_modules/promise ./node_modules/less-file/node_modules/promise 

请注意,即使每个人都依赖于promises包(ex 4.0.0 )的特定版本,也会发生这种情况。

尽pipe看起来有点多余,但我认为这会使依赖pipe理变得容易很多,而现在通常使用的额外空间应该可以忽略不计。