【发布时间】:2019-08-27 19:52:29
【问题描述】:
我无法让我的项目 .npmrc 文件识别在三个不同范围(项目、用户、全局)设置的任何环境变量。
我能够安装私有模块的唯一方法是将 api 密钥硬编码到 .npmrc 文件中,这显然是不可接受的,因为 .npmrc 被 git 监视。
我尝试按照npm-config docs 的建议创建环境变量,即:
- 在项目
.env文件中,其中.npmrc文件和.env文件都是package.json的同级文件,即:fontawesome_pro_token=ABC123 - 在用户配置文件中,即:
$ npm set fontawesome_pro_token ABC123 - 在全局配置文件中,即:
$ npm set fontawesome_pro_token ABC123 --global
当我在项目.npmrc文件中引用环境变量时,即:
@fortawesome:registry=https://npm.fontawesome.com/
//npm.fontawesome.com/:_authToken=${fontawesome_pro_token}
我收到此错误:
Error: Failed to replace env in config: ${fontawesome_pro_token}
当我删除变量名周围的花括号时(正如this stack overflow answer 建议的那样),我收到以下错误:
npm ERR! 401 Unauthorized
关于如何配置 npm 以读取环境变量的任何建议?
顺便说一下 -- 如果将私有模块部署到 Netlify,Netlify 期望 .npmrc 文件使用大括号来表示 env var 语法,请参阅 this gist。我可以确认在 git 监视的 npmrc 文件中使用大括号语法以及 netlify 项目管理仪表板中的 setting a build env var 确实有效。
【问题讨论】:
标签: node.js npm environment-variables