如何在Angular 6中通过`ng serve`设置环境

问题描述 投票:106回答:7

我正在尝试将我的Angular 5.2应用程序更新为Angular 6.我成功地遵循了Angular更新指南中的说明(包括更新angular-cli到v6),现在我正在尝试通过

ng serve --env=local

但这给了我错误:

未知选项:' - env'

我使用多个环境(dev/local/prod),这就是它在Angular 5.2中的工作方式。如何在Angular 6中设置环境?

angular angular6 angular-cli
7个回答
197
投票

你需要使用新的configuration选项(这适用于ng buildng serve

ng serve --configuration=local

要么

ng serve -c local

如果你查看你的angular.json文件,你会发现你可以更好地控制每个配置的设置(aot,optimizer,environment files,...)

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

您可以获取更多信息here来管理特定于环境的配置。

正如下面的其他响应中所指出的,如果您需要添加新的“环境”,则需要向构建任务添加新配置,并根据您的需要添加到服务和测试任务。

添加新环境

编辑:要说清楚,必须在build部分中指定文件替换。因此,如果您想将ng serve与特定的environment文件(例如dev2)一起使用,首先需要修改build部分以添加新的dev2配置

"build": {
   "configurations": {
        "dev2": {

          "fileReplacements": [
            {
              "replace": "src/environments/environment.ts",
              "with": "src/environments/environment.dev2.ts"
            }
            /* You can add all other options here, such as aot, optimization, ... */
          ],
          "serviceWorker": true
        },

然后修改你的serve部分以添加新的配置,指向你刚刚声明的dev2 build配置

"serve":
      "configurations": {
        "dev2": {
          "browserTarget": "projectName:build:dev2"
        }

然后你可以使用ng serve -c dev2,它将使用dev2配置文件


34
投票

This答案似乎很好。 然而,它导致我导致错误,因为它导致 Configuration 'xyz' could not be found in project ... 构建错误。 它不仅需要更新的构建配置,还需要服务。

所以只是不留下任何困惑:

  1. --env不支持angular 6
  2. --env变成了--configuration || -c(现在更强大)
  3. 要管理各种环境,除了添加新的环境文件外,现在还需要在angular.json文件中做一些更改: 在构建{ ... "build": "configurations": ...属性中添加新配置 新构建配置可能只包含fileReplacements部分,(但有更多选项可用) 在服务{ ... "serve": "configurations": ...属性中添加新配置 新服务配置应包含browserTarget="your-project-name:build:staging"

4
投票

对于Angular 2 - 5,请参阅文章Multiple Environment in angular

对于Angular 6使用ng serve --configuration=dev

注意:同样的文章也请参阅角度6。但无论你在哪里找到--env而不是使用--configuration。这适用于角度6。


4
投票

你可以试试:ng serve --configuration=dev/prod

建立用途:ng build --prod --configuration=dev

希望您使用的是另一种环境。


1
投票

使用此命令构建Angular 6

ng build --prod --configuration=dev

1
投票

您可以将命令ng serve -c dev用于生产环境的开发环境ng serve -c prod

而建筑也同样适用。您可以使用ng build -c dev进行开发构建


0
投票

Angular不再支持 - 而是必须使用

ng serve --c dev

对于发展环境,

ng serve --c prod 

用于生产。希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.