【发布时间】:2021-11-04 13:53:05
【问题描述】:
我们将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 界面,我有这个 URL
git@git.domain.com:library/grunt-stylus-sprite.git。对 npm install 运行它会尝试从 npm 注册表安装 git 模块。
但是使用 URL:git+ssh@git.domain.com:library/grunt-stylus-sprite.git 突然要求我输入密码。我的 SSH 密钥不包含密码,所以我认为它无法加载该密钥。也许我错过了一些配置?密钥位于我的主目录中的标准位置,名称为 "id_rsa"。
我使用的是 Windows 7 x64。
更新
从 NPM v3 开始,内置了对 GitLab 和其他源(BitBucket、Gist)的支持,您可以从中安装包。它适用于公共和私人,因此与此不完全相关,但有些人可能会觉得它有用。
npm install gitlab:<gitlabname>/<gitlabrepo>[#<commit-ish>]
查看文档:https://docs.npmjs.com/cli/install
如果您想在 Gitlab 中使用私有存储库,您需要在 .npmrc 中管理您的凭据/身份验证令牌。见这里:https://docs.gitlab.com/ee/user/packages/npm_registry/#authenticate-to-the-package-registry
【问题讨论】:
-
那么我使用的实际 gitlab url 是什么?我刚刚看到
<placeholders>我尝试了几种变体,但它仍然说找不到项目。 -
$ npm i -S git+ssh://git@gitlab.com/org/repo.git不起作用 -
Gitlab npm 注册表也可以用于私有包,没有任何问题。可以在 .npmrc 文件中处理身份验证,请参见此处:stackoverflow.com/a/42648251/4236831