230

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

ng serve --env=local

但这给了我错误:

未知选项:'--env'

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

4

8 回答 8

418

您需要使用新configuration选项(这适用于ng build并且ng 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"
      }
    ]
  }
}

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

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

添加新环境

编辑:为了清楚起见,必须在该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 配置文件

于 2018-05-04T12:12:54.880 回答
59

这个答案似乎不错。
但是,它导致我出现错误,因为它导致
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"
于 2018-05-28T10:53:51.753 回答
11

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

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

希望您使用的是不同类型的环境。

于 2018-08-22T10:33:42.163 回答
8

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

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

注意:对于 Angular 6,也请参阅同一篇文章。但是无论你在哪里找到,都可以--env使用--configuration. 这适用于 Angular 6。

于 2018-07-26T09:36:08.827 回答
8

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

ng serve -c dev

对于开发环境,

ng serve -c prod 

用于生产。

注意:-c--configuration

于 2019-04-30T18:28:41.833 回答
3

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

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

于 2019-02-03T06:34:28.060 回答
1

使用这个命令来构建 Angular 6

ng build --prod --configuration=dev
于 2018-07-20T05:54:55.503 回答
1

这适用于 Angular 12

第1步:

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

第 2 步:npx ng 运行 myapp:serve --configuration=staging

于 2021-12-09T12:41:01.343 回答