使用GitHub上的软件包作为依赖项而无需安装Git

时间:2019-04-23 09:48:34

标签: node.js git github npm package.json

我有一个主软件包,在其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即可安装它?

2 个答案:

答案 0 :(得分:1)

您应该能够provide a URL to a source tarball下载并使用它,而无需Git,例如:

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

您可能还必须处理GitHub身份验证。除了使用常规的用户名和密码,最好创建访问权限非常有限的an access token,只提供执行工作所需的权限。如果您使用两因素身份验证,则必须这样做。

拥有此令牌后,您应该可以将其添加到网址中,例如像

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

答案 1 :(得分:0)

在使用克里斯的解决方案之前,我已将本地软件包添加到名为repo的软件包中的单独文件夹中,并在package.json中将其引用为;

"dependencies": {
  "my-local-package": "file:./repo/my-local-package"
}

如果您的软件包不在Git上,或者远程服务器没有Internet连接,这仍然是解决方案。