【问题标题】:npm: Where do the children dependencies come from?npm:子依赖项来自哪里?
【发布时间】:2015-05-19 04:05:58
【问题描述】:

I read on github that

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

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

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

我的意思是:

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

我剩下的问题是:

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

【问题讨论】:

  • 不确定这是否是您要问的,但如果在您的 package.json 中有依赖项 A、B 和 C,并且它们每个都依赖于 X,那么它们每个都会有一个副本X 在 node_modules/AorBorC/node_modules/X
  • 那么在那个例子中,每个事物都有自己的 x 副本吗?或者每个人都会引用相同的 x?

标签: node.js npm package.json


【解决方案1】:

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

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

运行npm install,您将拥有promise 的4 个副本(您声明为依赖项的副本,其他每个依赖项都需要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),也会发生这种情况。

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

【讨论】:

    猜你喜欢
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    相关资源
    最近更新 更多