如何使用私有Github存储库作为npm依赖项


203

如何列出一个私人Github上回购为"dependency"package.json?我尝试了npm的Github URL语法,例如ryanve/example,但是npm install在package文件夹中这样做会导致私有依赖项出现“无法安装”错误。是否有一种特殊的语法(或其他某种机制)取决于私有存储库?

Answers:


284

可以通过https和oauth ssh完成。

https和oauth: 创建具有“回购”范围的访问令牌然后使用以下语法

"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"

要么

ssh: 设置ssh,然后使用以下语法:

"package-name": "git+ssh://git@github.com:<user>/<repo>.git"

(请注意在用户之前使用冒号而不是斜杠)


19
或者,如果您在github上设置了ssh,请跳过令牌并使用: "<package>": "git+ssh://git@github.com/<user>/<repo>.git
steveax 2015年

3
您如何始终将其用于最新版本?
法拉尔爵士

24
在末尾添加#master
茉莉·

4
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"没有为我工作。令人惊讶的是,切换令牌和x-oauth-basic可以完成这项工作。所以,"package-name": "git+https://x-oauth-basic:<github_token>@github.com/<user>/<repo>.git"为我工作。请注意,我在gitlab而不是github上。
misantronic

2
httpsx-oauth-basic作为用户名是没有必要的:"package-name": "git+https://<github_token>@github.com/<user>/<repo>.git"工作为好。
kadam18'Sep

25

如果有人在为Git Lab寻找其他选项,而以上选项不起作用,那么我们还有另一个选项。对于本地安装的Git Lab服务器,我们发现下面的方法允许我们包括软件包依赖关系。我们生成并使用访问令牌来完成。

$ npm install --save-dev https://git.yourdomain.com/userOrGroup/gitLabProjectName/repository/archive.tar.gz?private_token=InsertYourAccessTokenHere

当然,如果以这种方式使用访问密钥,则它应具有一组有限的权限。

祝好运!


8

使用git有一个https格式

https://github.com/equivalent/we_demand_serverless_ruby.git

此格式接受用户+密码

https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/equivalent/we_demand_serverless_ruby.git

因此,您可以做的是创建一个新用户,将其用作机器人,仅添加足够的权限,使其可以读取要加载到NPM模块中的存储库,然后直接将其存储在NPM模块中。 packages.json

 Github > Click on Profile > Settings > Developer settings > Personal access tokens > Generate new token

在“选择合并范围”部分中,检查on repo:完全控制私有存储库

这样令牌可以访问用户可以看到的私有仓库

现在,在您的组织中创建新的组,将此用户添加到该组中,并仅添加您希望以这种方式提取的存储库(“只读”权限!)

您需要确保将此配置推送到私有仓库

然后,可以将其添加到/packages.json(bot-user是用户名,xxxxxxxxx是生成的个人令牌)

// packages.json


{
  // ....
    "name_of_my_lib": "https://bot-user:xxxxxxxxxxxxxxxxxxxxxxxxxxx@github.com/ghuser/name_of_my_lib.git"
  // ...
}

https://blog.eq8.eu/til/pull-git-private-repo-from-github-from-npm-modules-or-bundler.html


1
因此,提交此个人访问令牌并在Travis CI之类的令牌中使用它是否安全?
Con Antonakos

@ConAntonakos,如果该项目是Github私有存储库,并且您已经支付了运行私有Github项目存储库的Travis CI,则可以(是的,因为您没有公开共享凭据),因此需要记住的一点是,您需要创建和使用仅对此私有存储库具有读取权限的新Github用户的凭据。因此,请不要使用您的个人帐户:) ...创建一个容易被暴露的bot用户帐户;)...如果您正在建立银行项目,则该项目将无法通过ISO认证,因此永远不会安全甚至不在GH上存储代码
等效8年8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.