如何为.npmrc使用设置环境变量

skw*_*wny 7 node.js npm package.json npm-scripts

我的项目中需要一个模块来下载私有的npm软件包。为此,我正在使用一个.npmrc文件来提供下载软件包所需的只读令牌。为了将npm提供的令牌保留在文件之外,我希望将其添加为环境变量,并使其在文件中扩展。例如:

# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)

NPM_TOKEN在安装引用之前,我不知道如何将其添加到环境中。我尝试使用npm预安装脚本:

"preinstall": "NPM_READ_ONLY_TOKEN=my_token_goes_here_foo_bar"**

但是我仍然遇到同样的错误:

Error: Failed to replace env in config: ${NPM_READ_ONLY_TOKEN}
Run Code Online (Sandbox Code Playgroud)

我尝试使用echo命令进行测试,以查看是否preinstall在.npmrc变量扩展之前运行,但显然没有。我会收到错误,但看不到我的回声日志。我似乎在这里错过了一些东西。

我知道将令牌放入package.json会破坏将令牌从.npmrc文件中拉出的目的。我实际上正在使用提供环境配置服务的服务,该服务将用于运行命令并获取所需的令牌。例如TOKEN=config_service_value

小智 23

您可以将环境变量添加到您的.bashrc或其他启动 shell 文件中。

export NPM_TOKEN=my_token_goes_here_foo_bar

  • 对于像我这样匆忙没有彻底阅读问题的人来说,环境变量是不够的,还需要 .npmrc 文件,其中包含 `//registry.npmjs.org/:_authToken=${NPM_TOKEN}` (19认同)
  • 正确答案 - 我在三天内尝试了约 250 篇不同的文章和答案。/sf/answers/4316681981/ (2认同)

sam*_*ntz 6

如果您使用的zsh是终端。您应该将环境变量放入文件中.zshenv

echo "export NPM_TOKEN=token_goes_here" >> ~/.zshenv
Run Code Online (Sandbox Code Playgroud)

然后你必须重新启动终端,然后尝试echo $NPM_TOKEN,你应该看到环境变量的值。

.bashrc或者如果您使用 bash,请发送至。


Ani*_*Dey 5

以下是在 Powershell (Windows 10) 中设置环境变量的方法:

$env:ENV_VARIABLE = 'Value of my environment variable'
Run Code Online (Sandbox Code Playgroud)

这是进一步学习的参考链接