从 github 拉取请求 npm 安装
Posted
技术标签:
【中文标题】从 github 拉取请求 npm 安装【英文标题】:npm install from github pull request 【发布时间】:2016-01-15 20:17:03 【问题描述】:查看npm install docs 似乎可以从 github 存储库进行 npm install。
是否也可以通过拉取请求专门安装?
解决方案是否只是基于拉取请求的最后一次提交(最后一个 sha)来安装?
【问题讨论】:
【参考方案1】:GitHub 为原始 repo 中的每个 PR 维护一个 namespace,所以这也有效:
npm install <user>/<repo>#pull/<id>/head
注意:它似乎不适用于 NPM v. 5。请参阅the comment below。 适用于 npm 7.0.23 和可能的更早版本。见the comment below。
例如:
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/
段。
如果您需要自动化安装或删除 PR 来源的 repo / 分支,这可能会有所帮助。另请参阅 GitHub 上的 Modifying an inactive pull request locally。
【讨论】:
@Munchkin 我不认为这是你会对 NPM 本身做的事情。也许 fork 存储库,将 PR 合并到您的 fork 中并从那里安装? Yarn(或 Github 不再?)似乎不支持拉入标签。因此,对于上面的示例,它将是:json-schema-faker/json-schema-faker#129/head。一些 PR 还有一个“合并”(而不是“头”)后缀,但我不知道这是什么意思。 @shaune 是的,这是 npm 客户端的一个已知限制。他们不编译从 git 存储库安装的包。请查看我的 npm-git-install 项目以获取更多详细信息和可能的解决方案。 我收到“pull/242/head”与 git 已知的任何文件都不匹配的消息 你好,@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。祝您好运,请分享您的发现。【参考方案2】:
“How to install NodeJS package from GitHub directly?”提到可以指定一个分支。
因此,如果您知道 PR 来自的 repo 和分支,您可以执行以下操作:
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'.
【讨论】:
以上是关于从 github 拉取请求 npm 安装的主要内容,如果未能解决你的问题,请参考以下文章