Angular-cli使用代理和动态端口作为命令行参数传递

时间:2017-05-23 07:17:28

标签: angular proxy angular-cli

我正在使用angular-cli并使用代理将我的请求正确转发到我的后端我使用以下配置(proxy-config.json):

{
  "/api/*": {
    "target": "http://mybackend.com:1234",
    "changeOrigin": true,
    "secure": false,
    "logLevel": "debug"
  }
}

我使用ng serve --proxy-config proxy-config.json

提供文件

这可以正常工作,但我在不同的端口上使用许多不同的分支进行测试,我希望能够轻松地将后端端口(在本例中为1234)更改为其他端口,而无需每次都编辑文件。 / p>

在一个带有grunt的angularjs项目中,我做了grunt serve:dev -r 1234之类的事情,其中​​-r表示代理端口。

1 个答案:

答案 0 :(得分:0)

您可以传递脚本而不是json作为proxy.conf.js;

//can be right next to angular.json
var process = require("process")
var BACKEND_PORT = process.env.BACKEND_PORT || 8080
console.log('backend port: ' + BACKEND_PORT)
const PROXY_CONFIG = {
  "/api/*": {
    "target": "http://localhost:" + BACKEND_PORT + "/api/",
    "changeOrigin": true,
    "logLevel": "debug"
  }
}
module.exports = PROXY_CONFIG

要参数化环境,您可以使用类似的命令进行调用

ng serve ----configuration=confname #for instance production

告诉angular从Angular.json内的projectname.architect.serve.configurations.confname字段加载配置。所以您需要像这样定义它; ​​

...{
  ...
  "projects": {
    "projectname": {
      ...
      "serve": {
        ...
        "configurations": {
          "confname": {
            "BACKEND_PORT": 80
          }
        },
        ...
      },
      ...
    }
  }