读取package.json中的外部凭据

时间:2016-11-21 13:52:48

标签: node.js git ssh npm

我需要将我的常用npm模块作为git依赖项并在许多模块中使用它。 我试图在git中使用访问令牌进行授权。我不想将令牌存储在package.json中(至少,如果它发生变化,很难在少数模块中更改它)。

我可以这样做:

的package.json

... 
"scripts": {
    "preinstall": "read-credentials.sh" 
}
...
"dependencies": {
    ...
    "my-module": "git+https://$$$token-from-variable$$$:x-oauth-basic@some-repo-url"
    ...
}

我知道有关私有npm模块的选项或者为git访问制作ssh密钥,但它并不适合我。问题的关键是要弄清楚是否有办法从一些预安装脚本(我可以访问访问令牌)中设置变量,并在package.json中使用它们。

2 个答案:

答案 0 :(得分:0)

你可以在npm上拥有private modules。它的价格为每月7美元,而且是为了这里的用例而创建的。

如果您出于某种原因不想这样做,那么您可以依靠git-specific environment variables来解决您的依赖关系。例如,如果您使用git+ssh://git@SERVER:USER/MODULE.git作为依赖项,那么npm将尝试使用git使用的默认凭据(使用ssh使用的凭据)使用git来获取它。您甚至可以更改GIT_SSH环境变量以完全控制SSH会话。

有关更多选项,请参阅Install node module from own gitlab server

答案 1 :(得分:0)

据我所知,没有办法创造这种变量。 我解决问题的方法是:

  1. 创建其他模块,可以从外部地方获取令牌,我可以将其放入公共git或npm repo。
  2. 依赖添加此模块。
  3. 在postinstall脚本中调用它。
  4. 使用npm.commands.install从JS获取令牌,构建URL并安装我的private-git-module。