为啥 yarn install checkout github 存储库依赖项但 npm install 没有?

Posted

技术标签:

【中文标题】为啥 yarn install checkout github 存储库依赖项但 npm install 没有?【英文标题】:Why does yarn install checkout a github repository dependency but npm install does not?为什么 yarn install checkout github 存储库依赖项但 npm install 没有? 【发布时间】:2019-11-18 02:15:32 【问题描述】:

我在 package.json 中将一个 github 存储库(TypeScript 项目,如果它重要的话)列为依赖项:

"ethereumjs-vm": "git+https://github.com/ethereumjs/ethereumjs-vm.git#v4.0.0-beta.1"

我想在我自己的项目中扩展这个公共项目的一些类。使用yarn install,整个存储库将被检出/复制(不是真正的 git 克隆,因为我无法运行 git 命令)到node_modules/ethereumjsvm,这很好。

使用npm install https://github.com/ethereumjs/ethereumjs-vm/tarball/v4.0.0-beta.1 --save,代码也会被检出。

使用npm install,我在node_modules/ethereumjsvm 中只得到4 个文件:更改日志、许可证、package.json 和自述文件。

有什么区别?为什么npm install 没有从仓库中获取源代码?

【问题讨论】:

可能是因为your package.json only lists the dist dir 用于安装(始终安装更改日志、许可证、软件包和自述文件)。为什么 Yarn 会忽略 files 字段是另一个问题,可能是 this issue。见:docs.npmjs.com/files/package.json#files 有道理,谢谢! 【参考方案1】:

Aaron Bell 为我提供了答案:我要包含的 github 项目的 package.json 中的 files 属性仅包含 dist 文件夹:

"files": [
   "dist/**/*"
]

这意味着npm install 将忽略存储库中的所有其他文件(除了始终安装的更改日志、许可证、package.json 和自述文件,请参阅package.json files docs)。 yarn 似乎有一个错误,即忽略此 files 属性 (issue)。

在此之后,我尝试使用来自 github 的项目 npm install,在 package.json 中没有 files 属性,并且它有效 - 源代码存储在 node_modules 中。

【讨论】:

以上是关于为啥 yarn install checkout github 存储库依赖项但 npm install 没有?的主要内容,如果未能解决你的问题,请参考以下文章

Yarn v3.0.2 为啥不安装 node_modules 文件夹?需要在 yarn 的命令之后运行 npm install 吗?

为啥 git developer 为命令 git checkout 选择了 checkout 这个词?

[Yarn] Install Yarn2

npm 相当于 yarn install 和 yarn webpack:build

$ yarn install 导致找不到模块 yarn-berry.js

使用命令 npm install -g yarn 安装 Yarn 时,出现错误