使用不同的环境设置运行 ng build --prod

Riy*_*iya 6 build production-environment package.json angular-cli angular

我为每个客户都有不同的环境设置,每个客户都有自己的 {{custName}}/environment.prod.ts 文件。我想通过 ng build --prod 命令使用它们各自的 prod 环境文件。我面临的问题是即使在指定环境之后它使用默认的 environment.prod.ts

我的package.json有类似的脚本

{.....
   customer_a : "ng build --prod --environment=custA_prod",
....}
Run Code Online (Sandbox Code Playgroud)

angular-cli.json我已经提到了这样的路径

  "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts",
        "qa": "environments/environment.qa.ts",
        "custA_prod": "environments/custA/environment.prod.ts"
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用 prod build 的所有功能但具有一些不同的环境设置?

Mut*_*amy 6

在 Angular 6+ 之后,angular.cli.json 已被 angular.json 取代。我们应该使用 --configuration 如下

包.json

"build_dev": "npm run && ng build --configuration=test",
Run Code Online (Sandbox Code Playgroud)

angular.json

...
 "configurations": {
.....
"test": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.test.ts"
                }
              ]
            }
          }
Run Code Online (Sandbox Code Playgroud)


小智 2

在您的环境文件中标记为生产模式:

环境/custA/environment.prod.ts 文件:

export const environment = {
  production: true,
  envName: "custA_prod",
  .....
};
Run Code Online (Sandbox Code Playgroud)

或者添加 main.ts 您的自定义检查:

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production || environment.envName == 'custA_prod') {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)