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

问题描述 投票:0回答:4

我的项目中需要一个模块来下载私有 npm 包。为了实现此目的,我使用

.npmrc
文件来提供下载包所需的只读令牌。为了将 npm 提供的令牌保留在文件之外,我希望将其添加为环境变量并让它在文件中扩展。例如:

# .npmrc
//registry.npmjs.org/:_authToken=${NPM_TOKEN}

我不知道如何在引用安装之前将

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}

我尝试使用 echo 命令进行测试,看看

preinstall
是否在 .npmrc 变量扩展之前运行,但显然没有。我会收到错误并且看不到我的回显日志。我似乎在这里遗漏了一些东西。

我知道将令牌放入 package.json 违背了从 .npmrc 文件中提取令牌的目的。我实际上正在使用提供环境配置服务的服务,我将使用该服务来运行命令并获取所需的令牌。例如。

TOKEN=config_service_value

node.js npm package.json npm-scripts
4个回答
50
投票

您可以将环境变量添加到您的

.bashrc
或其他启动 shell 文件中。

export NPM_TOKEN=my_token_goes_here_foo_bar


6
投票

如果您的终端使用

zsh
。您应该将环境变量放在
.zshenv
文件中。

echo "export NPM_TOKEN=token_goes_here" >> ~/.zshenv

然后你必须重新启动终端,然后尝试

echo $NPM_TOKEN
,你应该看到环境变量的值。

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

.bashrc


5
投票

以下是如何在 Powershell (Windows 10) 中设置环境变量:

$env:ENV_VARIABLE = 'Value of my environment variable'

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


0
投票
简单有效的方法:

    您创建“.npmrc.example”文件,将注册表地址放在那里并将该文件提交到存储库。
  1. 在本地,您手动复制“.npmrc.example”文件,将其重命名为常规“.npmrc”并将令牌添加到该文件中。常规 .npmrc 不得提交到存储库。
© www.soinside.com 2019 - 2024. All rights reserved.