npm dependencies 使用Git仓库
文章目录
Git仓库,可以是自己建的,可以是Github仓库,本文以Coding.net仓库为例。
因为 package.json 里的 dependencise,是使用npm install 执行安装的,可参考 install | npm Documentation的说明,了解 可使用哪些方式配置 dependencise。
使用Coding.net私有仓库
因为私有仓库,涉及授权,故如下各种方法都要配置授权信息,才能使用。
指定http url
也支持直接使用 http 指定压缩包url,从项目代码页面右上方可看到“下载”按钮,可从中获得代码压缩包url,可配置如下:
"jkpt_mobile": "https://coding.net/t/eyevision/p/jkpt_mobile/git/archive/develop"
但在Coding.net没找到该方法的授权方式,故该方式不支持使用私有项目。
使用git+ssh
因为git协议不包含授权机制,需结合ssh协议才能达到授权目的。
"jkpt_mobile": "git+ssh://git@git.coding.net:eyevision/jkpt_mobile.git"
该方式需要生成SSH密钥,参考配置SSH公钥的方法生产公私钥。生成的公私钥id_rsa、id_rsa.pub默认是在用户目录的 .ssh 中,如Windows则是(C:\Users\xxx.ssh,其中xxx为用户名),Linux则为~/.ssh。
不要修改生成后的文件名,如修改为coding_rsa,coding_rsa.pub,则需要在~/.ssh/config文件中配置如下:
Host git.coding.net
#User xxxx@email.com
PreferredAuthentications publickey
# 生成的非默认地址的公钥存放点
IdentityFile ~/.ssh/coding_rsa
然后在Coding.net的项目或个人账户里添加公钥,添加方法参考 配置SSH公钥 。
首次建立连接会要求信任主机,因此在 Git Bash(在Windows安装Git后,在任意目录右键菜单项中选择“Git Bash Here”,即可打开Git Bash) 中,执行 ssh -T git@git.coding.net,输入yes,信任主机后,才执行 npm install
使用git+https
因为git协议不包含授权机制,需结合https协议才能达到授权目的。
"jkpt_mobile": "git+https://git.coding.net/eyevision/jkpt_mobile.git#develop"
#后面可指定分支名,或tag,或commit id。
如#后面使用分支名,则每次npm install,会拉取该分支最新的提交。从nmp install的输出信息可看出,每次npm install时,都会拿最新的commit id替换分支名,如
git+https://git.coding.net/eyevision/jkpt_mobile.git#883980f09ec57f9a58c50d16aa7344285bb10188
Windows下的授权(本文以Window 10 为例)
执行 npm install,如没有授权信息,执行以下命令缓存Git使用的用户名、密码,不用每次输入,参见 Caching your GitHub password in Git - User Documentation。
git config --global credential.helper wincred
在执行以下命令,输入用户名、密码。clone下来后的仓库可删除。
git clone https://git.coding.net/eyevision/jkpt_mobile.git#develop
则会弹出一下窗口,提示输入你在Coding.net的用户名、密码。如果是在命令行提示输入用户名,不要输入邮箱,从Coding.net 我的账户页面的个性后缀信息中获取用户名,输入用户名。
添加后,可在 Window 10 中的 cortana 中输入“Credential Manager”,打开“凭证管理器”,可看到已加入git.coding.net的凭证。
如没有,可在这里按上图所示的信息,手动添加一个普通凭证。
Linux下的授权
在 ~/.git-credentials (没有就创建)内添加
https://username:passwd@git.coding.net
其中 username、passwd,根据实际值编辑,然后执行配置 Git 命令存储认证命令:
$ git config --global credential.helper store
执行后在 ~/.gitconfig 文件会多出下面配置项: credential.helper = store
使用Coding.net公有仓库
如果使用公有仓库,则除可使用以上私有仓库介绍的方式(不需配置授权信息)外,还可使用git://协议。
在 package.json 中配置
"dependencies": {
"jkpt_mobile": "git://git.coding.net/eyevision/jkpt_mobile.git#develop"
}
总结
对于Windows平台,推荐使用git+https方式,这种方法配置最少,且更方便区分用户,因为使用了“Credential Manager”也不用担心用户信息泄露。
对于Linux平台,也可使用git+https方式 和git+ssh方式都可。
文章作者 xyr
上次更新 2017-03-22