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

Gij*_*ijs 5 environment-variables npm reactjs package.json create-react-app

我正在使用create-react-app我的 React 项目(已弹出),并且我已经在package.json. 但我不想将我的凭据提交到此文件中。所以我使用添加到 npm 中npm config set my_user xxxx。我也可以在我的 ~/.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"
    }
  },
Run Code Online (Sandbox Code Playgroud)

这是行不通的。代理请求中不使用用户名和密码。

但如果我将其添加到“脚本”中:

"hello": "echo $npm_config_my_user $npm_config_my_pass
Run Code Online (Sandbox Code Playgroud)

和 run npm run hello,两者都相呼应......

有任何想法吗?这应该有效还是我做错了?

谢谢!吉斯

Gij*_*ijs 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;
Run Code Online (Sandbox Code Playgroud)

或者,如果您有多个要代理的 API,您可以循环 proxySetting 中的对象并为其中的每个对象设置凭据:

Object.keys(proxySetting).forEach(function(proxy) {
  proxySetting[proxy].headers.username = process.env.PROXY_USERNAME;
  proxySetting[proxy].headers.password = process.env.PROXY_PASSWORD;
});
Run Code Online (Sandbox Code Playgroud)

注意:scripts/start.js是由create-react-app生成的文件