Bri*_*lip 1 environment-variables node.js npm
当我将我的身份验证令牌硬编码到我的 .npmrc 文件中时,私有模块会按预期安装。
当我用环境变量替换硬编码令牌时,私有模块无法安装。
由于以下资源,我尝试了多种编写变量名称的方法,以及 .npmrc 文件中变量的语法:
示例 .npmrc 文件:
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=$NPM_TOKEN
Run Code Online (Sandbox Code Playgroud)
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${npm_token}
Run Code Online (Sandbox Code Playgroud)
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=$npm_token
Run Code Online (Sandbox Code Playgroud)
并且,示例 .env 文件,在值周围带有和不带有字符串:
npm_config_npm_token=ABC123
Run Code Online (Sandbox Code Playgroud)
npm_token=ABC123
Run Code Online (Sandbox Code Playgroud)
NPM_CONFIG_NPM_TOKEN=ABC123
Run Code Online (Sandbox Code Playgroud)
NPM_TOKEN=ABC123
Run Code Online (Sandbox Code Playgroud)
没有任何效果。
有什么线索吗?
编辑
我正在使用 npm v6.9.0。
我找出了我假设中的错误,并找到了解决方案。
tl;dr - 创建基于 shell 的持久环境变量,并在 .npmrc 文件中使用花括号变量语法。
错误是假设 npm 读取项目 .env 文件。显然 npm 不会读取位于项目根目录中的 .env 文件。
我希望 npm 从 .env 文件中读取,以便我可以保留项目中包含的项目的所有相关数据。
相反,我创建了一个始终可用的基于 shell 的环境变量。以下代码块显示了如何将环境变量添加到您的 (oh-my-zsh) shell,即使您 git watch 并发布您的 dot 文件。
# ~/.oh-my-zsh/custom/env.zsh
# be sure this file is gitignored!
export TOKEN="ABC123"
Run Code Online (Sandbox Code Playgroud)
# ~/.zshrc
source $ZSH/custom/env.zsh
Run Code Online (Sandbox Code Playgroud)
# example .npmrc
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${TOKEN}
Run Code Online (Sandbox Code Playgroud)
多亏了这个 npm 论坛的回答,它促使我转向这个基于 shell 的解决方案。
PS -因为本机OS Xman的网页文件export和source下builtin类,实际上没有提供关于每个命令是如何工作的,这里有链接,每个人页面的任何细节:
| 归档时间: |
|
| 查看次数: |
3798 次 |
| 最近记录: |