从gitlab私有存储库安装npm模块

我们正在使用GitLab作为我们的私人项目。 有一些从github分叉的库,我们要安装为npm模块。 直接从npm安装该模块是可以的,例如:

npm install git://github.com/FredyC/grunt-stylus-sprite.git

…也能正常工作,但是对GitLab做同样的事情,只是改变域名就会让我这个错误。

 npm WARN `git config --get remote.origin.url` returned wrong result (git://git.domain.com/library/grunt-stylus-sprite.git) npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git Cloning into bare repository 'D:\users\Fredy\AppData\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-sprite-git-6f33bc59'... npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git fatal:unable to connect to git.domain.com: npm ERR! git clone git://git.domain.com/library/grunt-stylus-sprite.git git.domain.com[0: 77.93.195.214]: errno=No error npm ERR! Error: Command failed: Cloning into bare repository 'D:\users\Fredy\App Data\Roaming\npm-cache\_git-remotes\git-git-domain-com-library-grunt-stylus-spr ite-git-6f33bc59'... npm ERR! fatal: unable to connect to git.domain.com: npm ERR! git.domain.com[0: xx.xx.xx.xx]: errno=No error 

从GitLab的Web界面,我有这个urlgit@git.domain.com:library/grunt-stylus-sprite.git 。 运行这个对npm install它试图从npmregistry安装git模块。

但是使用URL: git+ssh@git.domain.com:library/grunt-stylus-sprite.git突然要求input密码。 我的SSH密钥不包括密码,所以我认为它无法加载该密钥。 也许有一些我错过的configuration? 密钥位于我的主目录中的标准位置,名称为"id_rsa"

我在Windows 7 x64上。

UPDATE

由于NPM v3内置了对GitLab和其他来源(BitBucket,Gist)的支持,您可以在其中安装软件包。 不幸的是,它只适用于公共的,所以它不完全相关,但有些可能会发现它有用。

npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]

查看文档: https : //docs.npmjs.com/cli/install

我有使用GitLab的私人实例相同的问题。 从现有的答案中,您可以使用以下私人托pipe的存储库;

 git+ssh://git@git.mydomain.com:Username/Repository#{branch|tag} 

要么

 git+ssh://git@git.mydomain.com/Username/Repository#{branch|tag} 

更新

在注释中添加备选方法,并从npm文档https://docs.npmjs.com/files/package.json中添加; 。 NPM处理这两种情况,但你连接到的git服务可能不会。

而不是使用git:// ,使用git+ssh:// npm应该做正确的事情。

只是对于任何其他人绊倒了这一点,我根本无法通过HTTPS工作 – 似乎不支持直接链接到回购(例如https://git.domain.com/user/somerepo.git ),也不支持.tar.tar.bz.zip压缩文件版本。

它似乎只与.tar.gz档案一起工作。

完整的例子(带标签的版本):

https://git.domain.com/user/somerepo/repository/archive.tar.gz?ref=v1.2.3

至于我可以告诉你哪里错了是git://协议。 GitLab只支持克隆的HTTP(s)和SSH。 所以你必须使用这些方法之一而不是git协议。

虽然这个问题是关于Gitlab的,但是这个问题在谷歌search中排名很好,所以这里有一些关于如何解决我在Github上遇到的类似问题的更多信息。

对我来说,只有更改url并没有使它的工作。 以下是我必须采取的步骤来解决这个问题:

  • git+ssh://git@github.com:owner/repo.git#master
  • 创build一个部署密钥并将其添加到回购
  • 编辑git config( ~/.ssh/config创build文件,如果不存在的话)强制使用DeployKey而不是默认的ssh密钥

之后,npm安装简单的工作。 所有其他选项和解决scheme的NPM安装打破

没有其他的答案为我的私人gitlab.com回购工作…

这工作,但是:

npm i -S git+ssh://git@gitlab.com:<org>/<project>.git

它只是从项目页面的“克隆”input字段与git+ssh://添加到它的前面的git ssh克隆url。