如何在 package.json 中使用 $npm_config_?
Posted
技术标签:
【中文标题】如何在 package.json 中使用 $npm_config_?【英文标题】:How to use $npm_config_ in package.json? 【发布时间】:2018-03-14 10:07:24 【问题描述】:我在我的 React 项目(已退出)中使用 create-react-app
,并且我在 package.json
中配置了一个代理。但我不想在此文件中提交我的凭据。所以我使用npm config set my_user xxxx
添加到 npm。
我也可以在我的 ~/.npmrc 中看到它们。
"proxy":
"/api/v3/":
"target": "https://ourstagingserver.nl/",
"changeOrigin": true,
"ssl": false,
"secure": false,
"headers":
"username": "$npm_config_my_user",
"password": "$npm_config_my_pass"
,
这不起作用。代理请求中不使用用户名和密码。
但如果我将它添加到“脚本”中:
"hello": "echo $npm_config_my_user $npm_config_my_pass
并运行npm run hello
,两者都回显...
有什么想法吗?这应该有效还是我做错了?
谢谢!吉斯
【问题讨论】:
【参考方案1】:我没有弄清楚为此目的使用 $npm_config_
变量,但我确实解决了在 create-react-app 中为代理使用 ENV 变量的问题:
在scripts/start.js
(第 62 行,const proxySetting = require(paths.appPackageJson).proxy
下方)中添加:
proxySetting[Object.keys(proxySetting)[0]].headers.username = process.env.PROXY_USERNAME;
proxySetting[Object.keys(proxySetting)[0]].headers.password = process.env.PROXY_PASSWORD;
或者,如果您有多个要代理的 API,您可以遍历 proxySetting 中的对象并为其中的每个对象设置凭据:
Object.keys(proxySetting).forEach(function(proxy)
proxySetting[proxy].headers.username = process.env.PROXY_USERNAME;
proxySetting[proxy].headers.password = process.env.PROXY_PASSWORD;
);
注意:scripts/start.js
是由 create-react-app 生成的文件
【讨论】:
以上是关于如何在 package.json 中使用 $npm_config_?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 的 package.json 中的 NPM 脚本中关闭终端?
如何卸载 package.json (NPM) 中列出的所有依赖项?
NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包
NPM - package.json#engines |如何指定 Python?