1

我在 github 上读到

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

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

npm 作为包管理器非常棒。特别是,它很好地处理了子依赖项:如果我的包依赖于请求版本 2 和 some-other-library

我的意思是:

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

我剩下的问题是:

孩子的依赖从何而来?它们是副本吗?或者它们是否引用了 package.json 中已经存在的其他依赖项?

4

1 回答 1

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包(例如4.0.0),也会发生这种情况。

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

于 2015-03-16T22:02:21.337 回答