Angular 6で「ng serve」を介して環境を設定する方法


169

Angular 5.2アプリをAngular 6に更新しようとしています。Angular更新ガイド(angular-cliv6への更新を含む)の指示に従って正常に実行し、今からアプリを提供しようとしています

ng serve --env=local

しかし、これは私にエラーを与えます:

不明なオプション: '--env'

私は複数の環境(dev/local/prod)を使用していますが、これはAngular 5.2で機能していた方法です。Angular 6で環境を設定するにはどうすればよいですか?


1
そのv6、あなたangular-cliはアプリ全体と一緒に更新するので、私はそれを明白だと思いました:]
MartinAdámek18年

5
とても助かります、マーティン。あなたの洞察を共有してくれてありがとう。実際、それは最も明白ではありません。
Maxxx

回答:


303

あなたは、新しい使用する必要がある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"
      }
    ]
  }
}

ここでは、環境固有の構成を管理するための詳細情報を入手できます。

以下の他の応答で指摘されているように、新しい「環境」を追加する必要がある場合は、新しい構成をビルドタスクに追加し、必要に応じて、サービスおよびテストタスクにも追加する必要があります。

新しい環境を追加する

編集:明確にするために、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 staging --base-href = / yyy /
Eduardo Tolinoの

@EduardoTolino:はい、baseHrefできます。オプションがあります
David

開発環境のリモートデバッグポートはどこで指定できますか?でデバッグするようにVSCode。でAngular 6、もちろん。そのng serveため、Chromeブラウザの起動時にコマンドにリモートデバッガポートが含まれます。
ステファン


1
ng serve -c local "ng serve"と比較すると、アプリケーションのコンパイルに時間がかかります
Vignesh

46

この答えは良いようです。
ただし、
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"

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 2018

「ng serve --configuration = dev」コマンドを使用すると、時間がかかります
Vignesh

いいえ、それ以上の時間はかかりません。本番環境には、本番用にコードを縮小、醜化、最適化するための追加の手順があります。これらの追加手順を明示的にアクティブ化しない限り、他の環境では通常の時間がかかります。
レジナルドカマルゴリベイロ

6

Angular 2-5については、記事「Angleの複数環境」を参照してください。

Angular 6を使用する場合 ng serve --configuration=dev

注:角度6についても同じ記事を参照してください。ただし、--env代わりにを使用してください--configuration。これは角度6に適しています。



2

Angularは--envをサポートしなくなり、代わりに使用する必要があります

ng serve -c dev

開発環境および

ng serve -c prod 

生産のため。

注:-cまたは--configuration


これは、その、また、あなたの答えが間違っている、一年前に頼ま&答えた-c(単一ダッシュ)または--configuration(ダブルダッシュで)。
MartinAdámek19年

0

Angular 6でこのコマンドを使用してビルドします

ng build --prod --configuration=dev
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.