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


169

我正在尝试将Angular 5.2应用程序更新为Angular6。我已成功按照Angular更新指南(包括angular-cli对v6 的更新)中的说明进行操作,现在我正尝试通过以下方式为该应用程序提供服务

ng serve --env=local

但这给了我错误:

未知选项:“-env”

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


1
它的v6版本,您会angular-cli与整个应用一起更新,所以我认为它很明显:]
MartinAdámek,

5
马丁,非常有帮助。感谢您分享您的见解。实际上,它并不是最不明显的。
Maxxx

Answers:


303

您需要使用新configuration选项(同样适用于ng buildng serve

ng serve --configuration=local

要么

ng serve -c local

查看angular.json文件后,您会发现可以更好地控制每个配置的设置(自动配置,优化程序,环境文件...)

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


您是否知道是否还可以在配置中添加base-href?或仅在ng build --c登台--base-href = / yyy /
爱德华多·托利诺

@EduardoTolino:是的,可以baseHref选择
David

在哪里可以为开发环境指定远程调试端口?以便用调试VSCode。在Angular 6课程。因此,ng serve启动Chrome浏览器时,该命令将包括远程调试器端口。
斯蒂芬


1
与“ ng serve”相比,ng serve -c local花费时间来编译应用程序
Vignesh

46

这个答案似乎很好。
但是,由于
Configuration 'xyz' could not be found in project ...
构建错误导致了错误。
它不仅需要更新的构建配置,而且还可以提供服务

因此,请不要混淆:

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

8

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

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

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


ng serve --configuration = dev / prod命令比ng serve需要时间,为什么呢?
Vignesh

ng serve --configuration = prod比ng serve --configuration = prod需要更多的时间,这是由于文件最小化和生产就绪代码所致。
amku91

好的,如果我使用“ ng serve --configuration = dev”命令意味着它也会花费更多的时间
Vignesh

不,不应该花更多时间。产品环境有额外的步骤来最小化,丑化和优化生产代码。除非您明确激活这些额外的步骤,否则其他环境应花费正常时间。
Reginaldo Camargo Ribeiro

6

对于Angular 2-5,请参阅《 Angular中的多重环境》一文。

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

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


2

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

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



0

对Angular 6使用此命令进行构建

ng build --prod --configuration=dev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.