【问题标题】:How to add/set environment Angular 6 angular.json file如何添加/设置环境 Angular 6 angular.json 文件
【发布时间】:2018-10-23 02:36:57
【问题描述】:

如何指定要在 Angular 6+ 中使用的环境? .angular-cli.json 文件似乎已从以前的版本更改为 angular.json,并且其中的 json 的结构也随之更改。

我如何/在此文件中指定要使用的环境?

【问题讨论】:

标签: angular angular6


【解决方案1】:

angular.json 中有一个属性可以指定在 dev 和 prod 中使用哪个文件,并且像往常一样,您在项目中导入 environment.ts 以获得所需的内容。

"configurations": {
        "production": {
          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.prod.ts"
            }
          ],
          "optimization": true,
          "outputHashing": "all",
          "sourceMap": false,
          "extractCss": true,
          "namedChunks": false,
          "aot": true,
          "extractLicenses": true,
          "vendorChunk": false,
          "buildOptimizer": true
        }
      }

【讨论】:

    【解决方案2】:

    打开 angular.json 文件。我们可以看到默认情况下的配置,它将为您各自的环境添加代码 sn-p 显示。在 dev 的环境中添加 environment.dev.ts 文件,为 qa 添加 environment.qa.ts。根据您的喜好命名。 使用

     ng serve --configuration=environment_name
    

    environment_name - (dev,qa,prod) ng build 可以遵循相同的过程

    "configurations": {
            "production": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.prod.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            },
            "dev": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.dev.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": true,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            },
            "qa": {
              "fileReplacements": [
                {
                  "replace": "src/environments/environment.ts",
                  "with": "src/environments/environment.qa.ts"
                }
              ],
              "optimization": true,
              "outputHashing": "all",
              "sourceMap": false,
              "extractCss": true,
              "namedChunks": false,
              "aot": true,
              "extractLicenses": true,
              "vendorChunk": false,
              "buildOptimizer": true
            }
          }
    

    【讨论】:

    • 这是我要找的信息!默认的 angular.json 文件只包含生产配置,所以我不知道如何设置其他环境,例如 dev。
    • 以及如何在angular-cli中设置环境
    • 您可以使用 ng build --configuration=environment_name 进行构建。对于使用 ng serve 运行,在 angular.json 文件“serve”的 serve 属性中添加代码 sn-p:{ ..... “configurations”:{ “production”:{ “browserTarget”:“AppName:build:production”} , "environment_name": { "browserTarget": "AppName:build:environment_name" }, } 然后使用 ng-serve --configuration=environment_name
    • 对于 Angular 12 中的开发,构建你必须使用命令:“ng build -c development”,运行,如果默认情况下“ng serve”不是开发,那么尝试:“ng服务 -c 开发”。对于其他环境,您已添加环境文件并在 angluar.json 中提及“配置”和“服务”,只需按照“生产”作为示例,然后在 cli 中运行“ng serve -c " 以及使用 "ng build-c " 进行构建
    【解决方案3】:

    我尝试了在我的 Angular 6 应用程序中添加新配置“测试”的答案,然后运行 ​​

    ng serve --configuration=test
    

    并且收到一条错误消息,提示“在项目中找不到配置‘测试’”。 向下看 angular.json 文件,“build”下还有另一个部分,称为“serve”。新配置需要添加到“serve”下的配置部分,以便 ng serve 使用它:

    "serve": {
          "builder": "@angular-devkit/build-angular:dev-server",
          "options": {
            "browserTarget": "my-app:build"
          },
          "configurations": {
            "production": {
              "browserTarget": "my-app:build:production"
            },
            "test": {
              "browserTarget": "my-app:build:test"
            }
          }
        },
    

    【讨论】:

    • 它是用于 ng build --configuration=qa,而不是服务。
    • @DanielNetzer 为了让服务像答案中提到的那样运行,我仍然需要添加这部分。
    【解决方案4】:

    为了正确设置环境,我们需要通过将这些添加到配置文件angular.json 来让 Angular 知道。我们将通过扩展配置对象来做到这一点:

    ... // angular.json
    configurations": {
        "production" {...} // leave as it is,
        "dev": {
            "fileReplacements": [
                {
                    "replace": "src/environments/environment.ts",
                    "with": "src/environments/environment.dev.ts"
                }
            ]
        }
    }
    

    然后,将不得不更新服务对象:

    "serve": {
        "builder": "@angular-devkit/build-angular:dev-server",
        "options": {
            "browserTarget": "<appname>:build"
        },
        "configurations": {
            "production": ... // leave as it is
            "dev": {
                "browserTarget": "<appname>:build:dev"
            }
        }
    },
    

    src/environment/目录下再创建一个environment.dev.ts的环境文件

    并运行以下命令

    ng serve -c=dev
    

    您还可以通过在 package.json 中添加以下代码来创建一个命令来单独运行此环境

    "scripts": {
       "start:dev": "ng serve -c=dev --port=4000"
       }
    }
    

    我们来了

    npm run start:dev
    

    【讨论】:

    • 感谢您提供的信息丰富的回答。非常感谢!
    • 我很高兴我希望这能帮助其他人并节省他们的时间:)
    • @Hidayt Rahman 就像需要替换 json 文件一样,请您提供一些示例
    猜你喜欢
    • 2018-09-27
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2018-11-02
    • 1970-01-01
    • 2018-10-18
    相关资源
    最近更新 更多