我试图通过npm安装github私有存储库,包括其他私有github存储库作为依赖。

我尝试了很多方法和帖子,但没有一个是有效的。这是我正在做的:

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

在包中。Json是这样的:

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

正确的做法是什么?


当前回答

下面是一个更详细的版本,关于如何使用Github令牌而不发布在包中。json文件。

创建个人github访问令牌 在~/.gitconfig中重写安装url

git config --global url."https://<TOKEN HERE>:x-oauth-basic@github.com/".insteadOf https://x-oauth-basic@github.com/

安装私有存储库。用于调试访问错误的详细日志级别。

npm install --loglevel verbose --save git+https://x-oauth-basic@github.com/<USERNAME HERE>/<REPOSITORY HERE>.git#v0.1.27

如果访问Github失败,尝试运行git ls-remote…命令NPM install将打印

其他回答

下面是一个更详细的版本,关于如何使用Github令牌而不发布在包中。json文件。

创建个人github访问令牌 在~/.gitconfig中重写安装url

git config --global url."https://<TOKEN HERE>:x-oauth-basic@github.com/".insteadOf https://x-oauth-basic@github.com/

安装私有存储库。用于调试访问错误的详细日志级别。

npm install --loglevel verbose --save git+https://x-oauth-basic@github.com/<USERNAME HERE>/<REPOSITORY HERE>.git#v0.1.27

如果访问Github失败,尝试运行git ls-remote…命令NPM install将打印

请注意,你试图作为依赖项添加到你的包的github回购。Json文件需要有自己的包。Json文件定义。

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

我在其他地方找到了它,只需运行git-config manpage中记录的这个一次性命令。

git config --global url."https://${GITHUB_TOKEN}@github.com/".insteadOf git@github.com:

GITHUB_TOKEN可以设置为环境变量或直接粘贴

然后我安装私人github回购像:npm install user/repo—save


也适用于Heroku,只需设置上面的git配置…命令作为heroku预构建脚本包。将GITHUB_TOKEN设置为Heroku配置变量。

进一步,为了使密钥的访问安全

在package. env所在的目录级别创建.env文件。json驻留。 提到PERSONAL_ACCESS_TOKEN =******************************* 到.env文件 别忘了加上‘。Env '到.gitingore列表,这将防止暴露密钥给外部世界,当你让git提交到你的回购。 现在您可以在包中添加依赖项。Json格式如下:

Package.json

“依赖”:{ ... :“my-private-github-repo git + https:// $ {ENV.PERSONAL_ACCESS_TOKEN} @github.com/USER/abcd-repo-3.4.0.git ", ... }

还有其他方法使用“DOTENV”npm包,但当我们试图解决“Github”包依赖时,它不能做太多。以上似乎是一个直截了当的解决方案。

试试这个:

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

你也可以试试这个,其中visionmedia/express是name/repo:

"dependencies" : {
   "express" : "visionmedia/express"
}

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

"dependencies" : {
  "name": "*"
}

摘自NPM文档