当我将身份验证令牌硬编码到.npmrc文件中时,私有模块将按预期安装。
当我用环境变量替换硬编码的令牌时,专用模块无法安装。
由于以下资源,我尝试了多种方法来编写变量名称以及.npmrc文件中变量的语法:
npm-config
docs on env vars .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。
答案 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
类别下的source
和builtin
,并且实际上未提供有关每个命令的工作方式的任何详细信息,这是每个链接的手册页: