【问题标题】:npm install from github pull request从 github 拉取请求 npm 安装
【发布时间】:2016-01-15 20:17:03
【问题描述】:

查看npm install docs 似乎可以从 github 存储库进行 npm install。

是否也可以通过拉取请求专门安装?

解决方案是否只是基于拉取请求的最后一次提交(最后一个 sha)来安装?

【问题讨论】:

    标签: github npm


    【解决方案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'. 
    

    【讨论】:

      猜你喜欢
      • 2021-03-03
      • 1970-01-01
      • 2018-04-22
      • 2013-02-03
      • 2022-08-14
      • 2022-06-28
      • 2013-06-09
      • 2016-12-26
      • 2018-05-02
      相关资源
      最近更新 更多