.npmrc配置文件未读取环境变量以下载专用节点模块

时间:2019-04-04 10:51:30

标签: node.js npm environment-variables

当我将身份验证令牌硬编码到.npmrc文件中时,私有模块将按预期安装。

当我用环境变量替换硬编码的令牌时,专用模块无法安装。

由于以下资源,我尝试了多种方法来编写变量名称以及.npmrc文件中变量的语法:

.npmrc文件示例:

@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=$NPM_TOKEN
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${NPM_TOKEN}
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${npm_token}
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=$npm_token

还有示例.env文件,该值周围带有或不带有字符串:

npm_config_npm_token=ABC123
npm_token=ABC123
NPM_CONFIG_NPM_TOKEN=ABC123
NPM_TOKEN=ABC123

没有任何效果。

有任何线索吗?

EDIT

我正在使用npm v6.9.0。

2 个答案:

答案 0 :(得分:1)

假设您使用的是macOS,请尝试在终端中使用source命令刷新环境文件。

source .env

我遇到了同样的问题,看上去和您所做的帖子相同,但是直到我尝试了这些帖子之后,它们都没有起作用。我从here得到了提示。与链接的帖子中所建议的不同,我还在.npmrc文件中的变量周围使用了大括号。祝你好运!

答案 1 :(得分:1)

我弄清楚了我的假设中的错误,并且找到了解决方案。

tl; dr -创建基于外壳的持久性环境变量,并在.npmrc文件中使用花括号变量语法。

错误是假设npm读取项目.env文件。显然npm不会读取项目根目录中的.env文件。

我希望npm读取.env文件,以便我可以将项目的所有相关数据保留在项目中。。

相反,我创建了一个始终可用的基于外壳的环境变量。以下代码块显示了即使在git监视和发布点文件的情况下,也如何向(oh-my-zsh)shell添加环境变量。

# ~/.oh-my-zsh/custom/env.zsh
# be sure this file is gitignored!

export TOKEN="ABC123"
# ~/.zshrc

source $ZSH/custom/env.zsh
# example .npmrc

@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${TOKEN}

感谢this npm forum answer使我偏向基于shell的解决方案。


ps-因为本机OS X man页面文件位于export类别下的sourcebuiltin,并且实际上未提供有关每个命令的工作方式的任何详细信息,这是每个链接的手册页: