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

时间:2018-05-04 12:07:24

标签: angular angular6 angular-cli

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

ng serve --env=local

但是这给了我错误:

  

未知选项:&#39; - env&#39;

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

7 个答案:

答案 0 :(得分:188)

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

ng serve --configuration=local

ng serve -c local

如果您查看angular.json文件,您会发现您可以更好地控制每个配置的设置(aot,优化器,环境文件......)

"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配置文件

答案 1 :(得分:33)

https://stackoverflow.com/a/50174679/1484847答案似乎很好。 但是,它导致我出错,因为它导致构建中出现Configuration 'xyz' could not be found in project ...错误。 它不仅需要更新构建配置,还需要服务  的。

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

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

答案 2 :(得分:4)

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

要构建,请使用:ng build --prod --configuration=dev

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

答案 3 :(得分:3)

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

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

  

注意:角度6也请参考同一篇文章。但是无论您在哪里找到--env,都应使用--configuration。角度6效果很好。

答案 4 :(得分:1)

使用此命令构建Angular 6

ng build --prod --configuration=dev

答案 5 :(得分:1)

您可以在开发环境中使用命令ng serve -c dev                     ng serve -c prod用于生产环境

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

答案 6 :(得分:0)

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

ng serve --c dev

用于开发环境,

ng serve --c prod 

用于生产。希望这会有所帮助。