【问题标题】:Run ng build --prod with different environment settings使用不同的环境设置运行 ng build --prod
【发布时间】:2018-12-08 14:56:52
【问题描述】:

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

我的 package.json 有类似

的脚本
{.....
   customer_a : "ng build --prod --environment=custA_prod",
....}

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"
}

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

【问题讨论】:

    标签: angular build angular-cli production-environment package.json


    【解决方案1】:

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

    package.json

    "build_dev": "npm run && ng build --configuration=test",
    

    angular.json

    ...
     "configurations": {
    .....
    "test": {
                  "fileReplacements": [
                    {
                      "replace": "src/environments/environment.ts",
                      "with": "src/environments/environment.test.ts"
                    }
                  ]
                }
              }
    

    【讨论】:

      【解决方案2】:

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

      environments/custA/environment.prod.ts 文件:

      export const environment = {
        production: true,
        envName: "custA_prod",
        .....
      };
      

      或添加 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);
      

      【讨论】:

        【解决方案3】:

        我认为定义新环境的相对路径存在问题。

        第 1 步: 在环境目录中为 custA 创建一个 prod 环境文件。 例如environment.custA.prod.ts

        export const environment = { 
           mock: false,
           production: true,
           development: false,
           title: 'prod'
        }
        

        第 2 步:.angular-cli.json

        中定义环境
        environments: {
          "dev": "environments/environment.app.ts",
           "prod": "environments/environment.app.prod.ts",
           "mock": "environments/environment.app.mock.ts",
           "prod-custA": "environments/environment.custA.prod.ts"
        }
        

        第 3 步:package.json

        中定义一个脚本
        start-prod-custA : "ng build --prod --environment=prod-custA"
        

        【讨论】:

        • 否,与路径无关
        猜你喜欢
        • 1970-01-01
        • 2017-05-21
        • 1970-01-01
        • 2019-12-29
        • 1970-01-01
        • 1970-01-01
        • 2018-09-23
        • 2018-06-17
        • 2017-07-04
        相关资源
        最近更新 更多