【发布时间】:2019-04-05 13:38:41
【问题描述】:
我有一个项目,我们使用 font awesome 5 库。我按照here 中的说明进行操作,并使用我的身份验证令牌添加了一个.npmrc 文件。
将其放入回购中是否安全?我希望开发人员能够访问它,但如果 repo 公开,我们可能会暴露令牌。
在这种情况下最好的做法是什么?
【问题讨论】:
标签: npm environment-variables font-awesome
我有一个项目,我们使用 font awesome 5 库。我按照here 中的说明进行操作,并使用我的身份验证令牌添加了一个.npmrc 文件。
将其放入回购中是否安全?我希望开发人员能够访问它,但如果 repo 公开,我们可能会暴露令牌。
在这种情况下最好的做法是什么?
【问题讨论】:
标签: npm environment-variables font-awesome
2021-05-02 更新
这个答案仍然值得怀疑 - 请参阅下面的 cmets。我不再有权访问私人($paid)npm 帐户,因此我无法再通过测试来回答问题。
也许试试@konyak 的回答。
绝对不是将令牌放入任何 git 检查文件(包括 .npmrc)中的安全行为。
以下是您的团队可以采取的步骤来安全地利用您的 npm 令牌。
有两种不同的环境需要考虑:
遵循您在问题中链接到的Global Set Up instructions 不是解决方案。
创建类似于"Per project" instructions 的.npmrc 文件,但用变量名替换您的真实令牌,前缀为$。即:
@fontawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=$TOKEN
npm 将检测一个名为 .env 的环境变量文件。因此,在.gitignored .env 文件中,添加您的密钥值对,即:
TOKEN=ABC123
你也可以在变量名前加上“NPM_CONFIG_”,根据npm-config docs,即:
NPM_CONFIG_TOKEN=ABC123
现在,当开发者运行 npm i 时,字体很棒的依赖项将从私有存储库中加载。
注意:不要遵循当前关于环境变量语法的 npm-config 文档!见this stack overflow answer,即:
? BAD npm-config ENVIRONMENT VAR SYNTAX ?
${TOKEN}
? GOOD npm-config ENVIRONMENT VAR SYNTAX ?
$TOKEN
执行上述本地开发部分的所有步骤,另外:
如果您的应用主机是 Netlify,请查看他们的 Build Environment Variables docs。
【讨论】:
npm login 将您的身份验证令牌放回原处?
$TOKEN 比${TOKEN} 更可取的答案已被删除(而且,从来没有解释过为什么应该首选$TOKEN,刚才说它应该)。您能否详细说明一下:为什么$TOKEN 比${TOKEN} 更可取?如果一个适合您而另一个不适合,您使用的是哪个操作系统?
$TOKEN 和 ${TOKEN} 在它们扩展的方面是相同的。引用 bash 手册 The ‘$’ character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional (如果您希望我链接到 zsh 手册,请 lmk 说同样的话:D)
https://docs.npmjs.com/using-private-packages-in-a-ci-cd-workflow
将您的秘密令牌导出到您的会话中,例如,export NPM_TOKEN="00000000-0000-0000-0000-000000000000"
在您的~/.npmrc 中,添加//registry.npmjs.org/:_authToken=${NPM_TOKEN}
【讨论】:
:_authToken= 不起作用并且我不得不将其作为_auth= 放在单独的行上是否有原因?是否有某种语法变化或什么?