我们的 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.cfg
)GIT_TOKEN
在环境中设置并运行GIT_CONFIG=foo.cfg npm
。这假设 npm 不会剥离其环境;如果剥离了,那么你就倒霉了。