从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。