我有一个私人repo,我想安装在我的package.json文件中。
"private-module": "git+ssh://git@bitbucket.org:private/private-module.git"
默认情况下,npm使用您的默认私钥。我希望能够指定npm在运行npm install
时应该使用哪个ssh密钥。有办法做到这一点吗?
以下是一些解决方案:
-
在
~/.ssh/config
中添加一个条目。例如:主机bitbucket.orgIdentityFile~/.ssh/bitbacket_key身份只有是
-
使用
ssh-agent
并事先将密钥添加到代理实例中。 -
使用类似ssh-ident的东西来根据当前工作目录或传递给ssh-idente的参数动态选择ssh代理和标识。正如他们的自述文件所述,您通常会将ssh-ident别名为
ssh
,以便在任何地方都自动使用它。
在mscdex答案的第一部分中进行更改后,您可能需要将主机添加到已知主机列表中,然后npm install
命令才能工作。
您可以通过将私有repo克隆到另一个目录来做到这一点:
git clone ssh://git@bitbucket.org:private/private-module.git
您可能会被问到是否要继续,键入yes
并输入,则bitbucket.org是可信的。返回到您的项目目录,然后重试npm install
。这就是mscdex的答案对我有用所需要的。
还有其他方法可以添加受信任的主机,但这除了验证您是否真的可以访问所需的私有回购之外。
你显然可以用做到这一点
export GIT_SSH_COMMAND='ssh -i ~/.ssh/your_private_key'
否则,您可以在.npmrc
文件中使用NPM令牌:
// .npmrc
//registry.npmjs.org/:_authToken=${YOUR_NPM_TOKEN}
来源:https://blog.npmjs.org/post/118393368555/deploying-with-npm-private-modules