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

时间:2015-03-16 21:14:41

标签: node.js npm package.json

I read on github that

  

grunt-mocha-test使用npm的Peer Dependencies功能

我不确定“Peer Dependencies”是什么,所以我检查了npm文档并发现:

  

npm作为包管理器非常棒。特别是,它处理   子依赖关系非常好:如果我的包依赖于请求版本2   和其他一些图书馆

我的意思是:

  1. 拥有'对等依赖关系'意味着依赖关系可能需要其他依赖关系 依赖关系以便正常运行。
  2. npm创建一个树状结构,其中依赖项是根, 并且root依赖项具有子依赖性
  3. 我留下的问题是:

    子项依赖项来自哪里?它们是复制品吗?或者是他们 对package.json中已存在的其他依赖项的引用?

1 个答案:

答案 0 :(得分:1)

他们每个人都会有一份包裹。例如,如果您有一个包含这些依赖项的项目:

"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),也会发生这种情况。

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