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

Mar*_*mek 135 angular-cli angular angular6

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

ng serve --env=local
Run Code Online (Sandbox Code Playgroud)

但这给了我错误:

未知选项:' - env'

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

Dav*_*vid 241

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

ng serve --configuration=local
Run Code Online (Sandbox Code Playgroud)

要么

ng serve -c local
Run Code Online (Sandbox Code Playgroud)

如果你查看你的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"
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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

添加新环境

编辑:要清楚说明,必须在该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
        },
Run Code Online (Sandbox Code Playgroud)

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

"serve":
      "configurations": {
        "dev2": {
          "browserTarget": "projectName:build:dev2"
        }
Run Code Online (Sandbox Code Playgroud)

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


gar*_*l61 40

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

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

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


小智 15

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

ng serve -c dev
Run Code Online (Sandbox Code Playgroud)

对于开发环境,

ng serve -c prod 
Run Code Online (Sandbox Code Playgroud)

用于生产。

注:-c--configuration

  • 这是一年前被问及回答的,你的答案也是错误的,它的“-c”(带有单破折号)或“--configuration”(带有双破折号)。 (2认同)

小智 8

对于 Angular 2 - 5,请参阅文章多环境角度

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

注意:对于 angular 6,请参阅同一篇文章。但无论您在哪里找到,请--env改用--configuration. 这适用于角度 6。


amk*_*u91 6

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

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

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

  • 由于文件最小化和生产就绪代码,ng serve --configuration=prod 比 ng serve --configuration=prod 花费更多时间。 (2认同)