使用semver范围的Git SSH URL作为npm依赖项

时间:2018-05-03 17:17:39

标签: node.js git npm gitlab

关注examples from the official npm docs

git+ssh://git@github.com:npm/npm.git#v1.0.27
git+ssh://git@github.com:npm/npm#semver:^5.0
git+https://isaacs@github.com/npm/npm.git
git://github.com/npm/npm.git#v1.0.27

我尝试使用semver范围从私有GitLab存储库npm install获取依赖关系,如下所示:

git+ssh://git@gitlab.example.com:group/project.git#semver:^1.2.3

但我收到以下错误:

npm ERR! code 1
npm ERR! Command failed: /usr/bin/git checkout semver:^1.2.3
npm ERR! error: pathspec 'semver:^1.2.3' did not match any file(s) known to git.
npm ERR! 

npm ERR! A complete log of this run can be found in:
npm ERR!     /path/to/DATE-debug.log

即使指定分支或特定标记工作正常:

git+ssh://git@gitlab.example.com:group/project.git#branch_1_2
git+ssh://git@gitlab.example.com:group/project.git#1.2.3

版本信息

  • os :ubuntu 18.04
  • node -v :v10.0.0
  • npm -v :v5.6.0

1 个答案:

答案 0 :(得分:1)

这是一个错误

替换主机和&之间的冒号。网址的路径部分:

git+ssh://git@gitlab.example.com/group/project.git#semver:^1.2.3
         don't use a colon here ^

<强>信息

根据official npm docs,您应该可以使用冒号或斜杠:

<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]

但是GitLab [un]为您提供了一个复制/粘贴冒号的链接。

如此npm github issue中所述:

  

似乎早在5.1.x就破坏了。它在使用npm i -g npm@~5.0.0

时有效

正如引用的npm github pull request中所提到的,该错误现在已经修复,但从v5.6.0开始还不是npm的一部分