防止 URL 中嵌入的访问令牌替换 git 凭证缓存

防止 URL 中嵌入的访问令牌替换 git 凭证缓存

我们的 npm 项目有一个 git 依赖项,它位于需要凭据的私有服务器上。项目和依赖项都由同一台服务器托管。

使用带有凭证的 git 依赖项会导致各种问题:身份验证错误、npm 将人们的用户名添加到 URL 中package.json,等等。

为了尝试解决这个问题,我生成了一个只读访问令牌并将其作为密码嵌入到 URL 中。

{
  "dependencies": {
    "myPackage": "git+https://user:[email protected]`
    ...
  }
  ...
}
```

这对于运行来说没问题npm install,但是它wincred用访问令牌替换了我缓存的 git 凭据()!

我可以在构建之前和之后运行一个命令来说类似这样的话:“请暂时不要缓存这些凭据,但也不要忘记缓存?”

答案1

如果您想避免将凭据保存到凭据助手中,则需要将选项设置credential.helper为空字符串。您可以使用类似 的语法来执行此操作git -c credential.helper= clone URL,但必须在调用命令时使用该语法,如果由 npm 调用该命令,这将很困难。

请注意,通常将凭据嵌入 URL 是不安全的,您应该避免这样做。事实上,Git 列表中已经讨论过放弃对此的支持。您可以尝试使用以下示例从 Git FAQ 中的环境中读取使用自定义配置文件。该文件可能如下所示:

[credential]
    helper =
    helper = "!f() { echo username=author; echo \"password=$GIT_TOKEN\"; };f"

然后你可以(假设你的文件是foo.cfgGIT_TOKEN在环境中设置并运行GIT_CONFIG=foo.cfg npm。这假设 npm 不会剥离其环境;如果剥离了,那么你就倒霉了。

相关内容