从 GitHub 拉取请求进行 npm 安装。

72

看了一下npm install文档,似乎可以从Github仓库中进行npm安装。

那么是否也可以从一个pull request中进行安装呢?

解决方案是根据该pull request的最后提交(last sha)进行安装吗?

2个回答

111

GitHub在原始存储库中为每个PR维护一个命名空间,因此这也可以起作用:

npm install <user>/<repo>#pull/<id>/head

注意:在NPM v.5中似乎无法正常工作。请参见下面的评论。 适用于npm 7.0.23和可能的早期版本。请参见下面的评论

例如:

npm i --save-dev json-schema-faker/json-schema-faker#pull/129/head

或使用yarn

yarn add <user>/<repo>#<id>/head
例如:
yarn add json-schema-faker/json-schema-faker#129/head
请注意,在Yarn的情况下,包标识符中没有pull/段。如果您需要自动安装或存储库/分支被删除,这可能会很有帮助。另请参阅GitHub上的在本地修改非活动拉取请求

2
@Munchkin 我认为这不是你可以通过 NPM 自身完成的事情。也许你可以 fork 该存储库,在你的 fork 中合并 PR 并从那里安装? - Tad Lispy
2
Yarn(或者说Github)似乎不支持拉取标签。因此,对于上面的示例,它应该是:json-schema-faker/json-schema-faker#129/head。有些PR还有一个“merge”(而不是“head”)后缀,但我不知道那是什么意思。 - Damon Maria
1
@shaune 是的,这是 npm 客户端已知的限制。它们不会编译从 git 存储库安装的软件包。请查看我的 npm-git-install 项目,了解更多详细信息和可能的解决方案。 - Tad Lispy
3
我收到的信息是'pull/242/head'与Git已知的任何文件都不匹配。 - AlxVallejo
1
你好,@AlxVallejo。很遗憾,在NPM v.5中它无法工作。不幸的是,我现在无法进行调查。我会分析npm install --verbose <URL>的输出结果,以便比较版本4.x.x(可以工作)和5.x.x。如果您正在使用NVM,切换很容易:nvm install 7用于NPM 4,nvm install 8用于NPM 5。祝你好运,请分享你的发现。 - Tad Lispy
显示剩余10条评论

30
"如何直接从GitHub安装NodeJS包?"中提到可以指定分支。

因此,如果您知道来自哪个存储库和分支的PR,请执行以下操作: "
npm install git+https://github.com/user/repo.git#branch 
值得一提的是,在 shell 中使用特定分支时,您可能需要转义 # 符号,例如:
npm install git+https://github.com/user/repo.git\#branch 
请注意,您想要安装的代码库必须是一个npm模块,它必须包含一个package.json文件,否则您将会遇到这个错误:
Error: ENOENT, open 'tmp.tgz-unpack/package.json'. 

如果你遇到以下错误,可能是因为你没有正确安装 Git(或者根本没有安装 - 比如在 Alpine 镜像中)。npm ERR! code ENOENT npm ERR! syscall spawn git npm ERR! path git npm ERR! errno -2 npm ERR! enoent An unknown git error occurred - MountainAsh
@MountainAsh 很好的观点。安装Git是前提条件。 - VonC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接