I read on github that


  grunt-mocha-test使用npm的对等依赖功能


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


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


我的意思是:


具有“对等依赖项”意味着依赖项可能需要其他
依赖关系才能正常运行。
npm创建一个树状结构,其中依赖项是根,
并且根依赖项具有子项依赖项


我剩下的问题是:

孩子的依赖关系从何而来?他们是副本吗?还是他们
引用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程序包的特定版本(例如4.0.0),也会发生这种情况。

尽管看起来有些多余,但我想这会使依赖性管理容易得多,如今,通常使用的额外空间应该可以忽略不计。

关于node.js - npm:子项依赖关系从何而来?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29087049/

10-09 20:25
查看更多