从 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 &lt;URL&gt; 的输出版本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 安装的主要内容,如果未能解决你的问题,请参考以下文章

使用来自 env 变量的令牌从私有 Github 存储库安装 NPM 包

python3-关于GitHub的最基本操作

测试 npm 包依赖的拉取请求的有效方法

从 GitHub 拉取请求中获取评论列表

更换皮肤主题

如何创建从一个分支的 Bitbucket 到 GitHub 中的主分支的合并拉取请求