【问题标题】:Why yarn install downloads node_modules for dependency?为什么 yarn install 会下载 node_modules 以获取依赖关系?
【发布时间】:2020-12-14 23:59:46
【问题描述】:

我有一个具有依赖关系的节点投影,比如说depA。在我的项目上运行yarn install 之后,它会下载node_modules/depA/node_modulesdepA 的所有依赖项,这使得node_modules 目录非常大。它不会为其他依赖项下载此文件夹。有什么我应该看看为什么它会发生在depA 上的吗?

【问题讨论】:

  • 一般来说,如果传递依赖 depA 需要的版本和你的其他依赖需要的版本之间存在冲突,Yarn/NPM 会这样做。
  • 我看到node_modules 目录很大。它是下载所有依赖项还是只下载冲突依赖项?

标签: node.js npm yarnpkg


【解决方案1】:

它是如何在 node.js 中安装依赖项的,创建一个名为 node_modules 的文件夹,然后从 npm 服务器获取并下载 package.json 中提到的所有依赖项。

现在出现了转折,比如在你的 package.json 中只有依赖 depA。但是库 depA 内部依赖于 depSubA、depSubB 那么这两个也将被下载以便 depA 可以工作。

在以前的 npm 版本(我猜是 5 之前)中,node_modules 中曾经有子文件夹,它们具有独立的依赖关系,造成重复和巨大文件夹的机会,现在最新版本共享这些公共依赖关系。

查看更多详情https://docs.npmjs.com/configuring-npm/folders.html

【讨论】:

  • depA 下的每个依赖是否都下载自己的依赖?为什么只下载depA 而其他人不下载?
  • 如果 depA 对 depSubA 有依赖,它将被下载
  • 有没有办法停止下载这些嵌套的依赖项?
  • 不,节点依赖是这样工作的,DENO 来回答这个问题
猜你喜欢
  • 2019-11-18
  • 2013-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-13
  • 2019-06-20
  • 1970-01-01
  • 2016-09-25
相关资源
最近更新 更多