首页 > 解决方案 > 在没有安装 Git 的情况下使用 GitHub 上的包作为依赖项

问题描述

我有一个主包,package.json其中包含对 GitHub 上的包的依赖项:

"dependencies": {
    "private-package": "user/private-package"
},

这一切在我的本地机器上运行良好,它下载并安装包。

但是,这需要安装在我没有任何权限的托管容器上。它需要一个主包的压缩包,并将安装所有依赖项。但是,以下日志失败了;

npm ERR! code ENOGIT
npm ERR! No git binary found in $PATH
npm ERR! 
npm ERR! Failed using git.
npm ERR! Please check if you have git installed and in your PATH.

我不确定如何解决这个问题,我可以想到几条路线;

  1. 在 tarball 中本地打包所有依赖项
  2. 以某种方式在远程容器上安装 Git(我可以使用package.json吗?)
  3. Git 包的一些不同结构,不需要 Git 安装依赖项

第 1 个问题是我开始的最初问题,这导致我采用 GitHub 方法(我使用本地包,在此之前我似乎无法成为 tarball 的一部分,无论如何)。

有什么方法可以依赖 GitHub 存储库,以便在不使用 Git 的情况下安装它?

标签: node.jsgitgithubnpmpackage.json

解决方案


您应该能够提供一个指向源 tarball 的 URL,该源 tarball将在不需要 Git 的情况下下载和使用,例如:

"private-package": "https://github.com/<user>/<project>/archive/<tag>.tar.gz"

您可能还必须处理 GitHub 身份验证。与其使用您的常规用户名和密码,不如创建一个访问权限非常有限的访问令牌,只为它提供完成工作所需的内容。如果您使用双重身份验证,这将是必需的。

拥有此令牌后,您应该能够将其添加到 URL,例如

"private-package": "https://<user>:<token>@github.com/<user>/<project>/archive/<tag>.tar.gz"

推荐阅读