如何从angular.json配置的environment.ts变量读取端口和主机

时间:2019-09-17 07:20:48

标签: angular angular-cli-v7

有什么方法可以读取来自environment.ts文件的帖子编号和主机名并运行ng serve命令。我的要求是为Dev,QA和Prod环境使用不同的端口和主机。

现在我要在angular.json文件中手动更改

“服务”:{           “ builder”:“ @ angular-devkit / build-angular:dev-server”,           “选项”:{             “端口”:5001             “主持人”:“ 10.20.45.10”           }

我想根据构建形式从environment.ts和environment-prod.ts读取

1 个答案:

答案 0 :(得分:0)

当有角度的应用程序运行时,环境将是配置的好地方,但是在这里我们尝试基于配置文件运行cli,我希望在angular.json文件中进行设置,但是我面对死胡同,所以我去编写一个节点脚本,它将从文件中获取配置,然后运行该配置的cli基础,也许有更好的方法,但这是我们所得到的。

我在这里使用ts-node

run.ts

import { exec } from 'child_process';
import { environment as dev } from './src/environments/environment';
import { environment as prod } from './src/environments/environment.prod';


function run(command: string): void {
    exec(command).stdout.on('data', (data) => {
        console.log(data.toString());
    });
}

const target = process.argv.slice(2)[0] || 'dev';

console.log(` running in => ${target} `);
switch (target) {
    case 'prod': {
        run(`ng s --host ${prod.url} --port ${prod.port} `);
        break;
    }
    default: {
        run(`ng s --host ${dev.url} --port ${dev.port} `);
    }

}

配置文件run-tsconfig.json(我已经从tsconfig.json复制了此文件)

   {
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "module": "commonjs",
    "moduleResolution": "node",
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ]
  }
}

environment.prod.ts

export const environment = {
  production: true,
  url: '127.0.0.1',
  port: 2000
};

environment.ts

export const environment = {
  production: false,
  url: '127.0.0.1',
  port: 3000
};

运行生产网址的客户端库

ts-node --project run-tsconfig.json run.ts prod

prod

默认情况下将从environment.ts(dev)读取url信息

ts-node --project run-tsconfig.json run.ts

dev