如何在package.json中使用$ npm_config_?

时间:2017-10-03 08:54:04

标签: reactjs npm environment-variables package.json create-react-app

我使用create-react-app作为我的React项目(已退出),并且我已在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,两者都被回应......

有什么想法吗?这应该有用还是我做错了?

THX!的Gijs

1 个答案:

答案 0 :(得分: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;

或者你可以循环遍历proxySetting中的对象,并设置那里的每个对象的凭据,如果你有多个API要代理:

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

生成的文件