关于node.js:npm在package.json中依赖安装私有github存储库

npm install private github repositories by dependency in package.json

我正在尝试通过NPM安装Github私有存储库,其中包括其他私有Github存储库作为依赖项。

已经尝试了很多方法和帖子,但没有一个是有效的。以下是我要做的:

1
npm install git+https://github.com/myusername/mygitrepository.git

在package.json中:

1
2
3
4
"dependencies": {
   "repository1name":"git+https://github.com/myusername/repository1.git",
   "repository2name":"git+https://github.com/myusername/repository2.git"
}

正确的方法是什么?


试试这个:

1
2
3
4
"dependencies" : {
 "name1" :"git://github.com/user/project.git#commit-ish",
 "name2" :"git://github.com/user/project.git#commit-ish"
}

您也可以尝试这样做,其中visionmedia/express是name/repo:

1
2
3
"dependencies" : {
  "express" :"visionmedia/express"
}

或者(如果存在NPM包模块):

1
2
3
"dependencies" : {
 "name":"*"
}

取自NPM文件


在我需要的所有场景中,以下功能都很好:

1
2
3
"dependencies": {
"GitRepo":"git+https://<token-from-github>:[email protected]/<user>/<GitRepo>.git"
}


对于那些来这里访问公共目录的人,从NPM文档:https://docs.npmjs.com/files/package.json git urls作为依赖项

Git URL作为依赖项

Git URL的格式可以是:

1
2
3
4
5
git://github.com/user/project.git#commit-ish
git+ssh://user@hostname:project.git#commit-ish
git+ssh://user@hostname/project.git#commit-ish
git+http://user@hostname/project/blah.git#commit-ish
git+https://user@hostname/project/blah.git#commit-ish

commit ish可以是任何标记、sha或分支,可以作为git checkout的参数提供。默认值为master。


接受的答案是可行的,但我不太喜欢将安全令牌粘贴到package.json中的想法。

我在别处找到了它,只需运行这个一次性命令,如git-config手册页中所述。

1
git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf [email protected]:

GITHUB_TOKEN可以设置为environmnet变量,也可以直接粘贴。

然后我安装私有的github repos,比如:npm install user/repo --save

在heroku中也可以工作,只需在package.json中将上述git config ...命令设置为heroku-prebuild脚本,并将GITHUB_TOKEN设置为heroku配置变量。


正如人们所指出的,有多种方法可以做到这一点,但最短的版本是:

1
2
3
4
5
6
7
8
// from master
"depName":"user/repo",

// specific branch
"depName":"user/repo#branch",

// specific commit
"depName":"user/repo#commit",

例如

1
2
3
4
5
"dependencies" : {
 "hexo-renderer-marked":"amejiarosario/hexo-renderer-marked#patch-1",
 "hexo-renderer-marked":"amejiarosario/hexo-renderer-marked#2249507",
 "hexo-renderer-marked":"amejiarosario/hexo-renderer-marked",
}


1
2
3
"dependencies": {
 "some-package":"github:github_username/some-package"
}

或者只是

1
2
3
"dependencies": {
 "some-package":"github_username/some-package"
}

https://docs.npmjs.com/files/package.json_github网址


因为Git在引擎盖下使用curl,所以您可以使用带凭证的~/.netrc文件。对于Github,它看起来像这样:

1
2
3
machine github.com
  login <github username>
  password <password OR github access token>

如果您选择使用access tokens,则可以从以下位置生成:

Settings -> Developer settings -> Personal access tokens

如果您在自己的公司中使用Github Enterprise,这也应该有效。只需将企业Github URL放在machine字段中。


对于我的私有存储库引用,我不想包括一个安全令牌,其他简单的(即只在package.json中指定)都不起作用。以下是工作原理:

  • 转到github.com
  • 导航到专用存储库
  • 单击"克隆或下载"并复制URL(与上述示例不匹配)
  • 添加提交sha
  • 运行NPM安装