npm
是前端开发常用的包管理工具。
如果需要依赖第三方包时,直接使用npm安装npm仓库中的包,但在日常工作和学习中,如果没有将开发好的包发布到npm仓库怎么办呢?
那么,可以是npm
直接从git仓库进行安装,即便是内部的私有git仓库,也是支持的。
在npm官方文档中,有写道:
Installs the package from the hosted git provider, cloning it with git. For a full git remote url, only that URL will be attempted.
<protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]
protocol is one of git, git+ssh, git+http, git+https, or git+file.
所以可以按照上面的格式来指定git包的地址和版本,例如:
npm install git+ssh://git@github.com:npm/cli.git#v1.0.27
npm install git+ssh://git@github.com:npm/cli#pull/273
npm install git+ssh://git@github.com:npm/cli#semver:^5.0
npm install git+https://isaacs@github.com/npm/cli.git
npm install git://github.com/npm/cli.git#v1.0.27
如果是git仓库是私有的,那么可以在git账号中配置SSH Keys
即可。
如果SSH Keys
都配置了,git账号权限也开了,遇到下面这个问题:
npm ERR! code 128
npm ERR! An unknown git error occurred
npm ERR! command git --no-replace-objects ls-remote git@gitlab.stnts.com:yunyouxi/suileyoo-echo-proto.git
npm ERR! command-line line 0: Bad yes/no/ask argument.
npm ERR! fatal: Could not read from remote repository.
npm ERR!
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.
可以看出大概是这个引起的:npm ERR! command-line line 0: Bad yes/no/ask argument.
可以参考一下这两个issue:
https://github.com/npm/cli/issues/3578
https://github.com/npm/git/issues/31
猜测这是部分npm和git版本的问题。
最后,使用下面这个命令就可以install
成功了。
GIT_SSH_COMMAND="ssh" npm install git+ssh://git@github.com:npm/cli.git#v1.0.27