为啥 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 这个词?
npm 相当于 yarn install 和 yarn webpack:build