angular.jsonの中身


angular-cli 7.1.2で確認しました。
ng newで生成されるプロジェクトのangular.jsonの中身について、よく使う項目の調査です。


#ルートオブジェクト

* $schema
　このファイルに関するJSON Schemaの定義ファイル
　"./node_modules/@angular/cli/lib/config/schema.json"
　固定
　https://github.com/angular/angular-cli/blob/master/packages/angular/cli/lib/config/schema.json

* version
　"1" 固定
* cli
　生成時にはない。
　ngコマンド全般に対するデフォルトオプションを設定できる。
* schematics
　生成時にはない。
　generate系のコマンドライン引数のデフォルトを設定できる。
　また、ngコマンドで生成するものを拡張していける（自作可）。
* newProjectRoot
　"projects"
　ng generate libraryした際の保存先フォルダ
* defaultProject
　複数のprojectがある場合のデフォルトを指定する
　ng generateやng buildする際にproject名を指定していない場合に利用される
* projects
　プロジェクト名をキーにした各プロジェクトの詳細設定がある。

## cliの中身
| 項目名 | 説明 |
|-----------|------------|
| defaultCollection | schematicsのデフォルトを設定する |
| packageManager | "npm", "cnpm", "yarn"からパッケージマネージャーを設定する |
| warnings | ※1 |

### ※1 warningsの中身
| 項目名 | 説明 |
|-----------|------------|
| versionMismatch | グローバルとローカルのバージョン違いの警告を表示する |
| typescriptMismatch | typescriptのバージョンの警告を表示する |


## projectsの中身
| 項目名 | 説明 |
|-----------|------------|
| cli | ルートオブジェクトと同様 |
| schematics | ルートオブジェクトと同様 |
| prefix | generateするものに対してつくprefix |
| root | プロジェクトのrootになるフォルダ |
| sourceRoot | assetsやindex.htmlがあるソースのフォルダ |
| projectType | "application", "library"から選択する |
| architect | 名称をキーにした詳細設定 ※2 |
| targets | 名称をキーにした詳細設定 ※2 |

※2 architectとtargetsはどちらか一つ。デフォルトではarchitectのみ。


### ※2 architectとtargetsの中身
| 項目名 | 説明 |
|-----------|------------|
| builder | builderの設定。 |
| | @angular-devkit/build-angular:app-shell  |
| | @angular-devkit/build-angular:browser  |
| | @angular-devkit/build-angular:dev-server  |
| | @angular-devkit/build-angular:extract-i18n  |
| | @angular-devkit/build-angular:karma  |
| | @angular-devkit/build-angular:protractor |
| | @angular-devkit/build-angular:server |
| | @angular-devkit/build-angular:tslint |
| options | builderに対するoption設定 |
| configurations | cliで実行時に切り替えするoption設定 |


#### build-angular:appShell の option設定の中身
| 項目名 | 初期値 | 説明 |
|-----------|------------|------------|
| browserTarget | | ビルドターゲットとなるブラウザ |
| serverTarget | | app shellをレンダリングするサーバ |
| appModuleBundle | | サーバ用のAppModule |
| route | / | レンダーするroute |
| inputIndexPath | |  |
| outputIndexPath | |  |


#### build-angular:browser の option設定の中身
| 項目名 | 初期値 | 説明 |
|-----------|------------|------------|
| assets | [] | アセットとして含めるファイルのリスト |
| main | | エントリポイントになるスクリプトファイル |
| polyfills | | polyfill用のスクリプトファイル |
| tsConfig | | TypeScript設定ファイルのパス |
| scripts | [] | グローバルな（index.htmlに直接読み込ませる）スクリプトファイルのリスト |
| styles | [] | グローバルなスタイルシートのリスト。extractCssがtrueだと単独のstyles.cssに書き出される。 |
| stylePreprocessorOptions | | scss等のプリプロセッサのオプション（includePaths）|
| optimization | | 最適化する。{scripts: true, styles: false} というような個別設定も可能 |
| fileReplacements | | ファイル差し替え。主にenvironmentファイルに使われる。|
| outputPath | | ビルドした生成物が出力されるフォルダ |
| resourcesOutputPath | | styleの出力フォルダ。outputPathからの相対。 |
| aot | false | Ahead of Time compilation（事前コンパイル）を有効にする |
| sourceMap | true | sourceMapを出力する。{scripts: true, styles: true, hidden: false, vendor: true}というような個別設定も可能 |
| vendorSourceMap | false | ライブラリのsourceMapを出力する |
| evalSourceMap | false | in-file evalスタイルのsourceMapを出力する |
| vendorChunk | true | ライブラリだけで単独のファイルにする。ライブラリは変更頻度が低いため。 |
| commonChunk | true | 複数にまたがるコードを共通ファイルにする。 |
| baseHref | | index.htmlに<base>タグとして出力されるパス。サブフォルダで使うような場合に設定する。 |
| deployUrl | | 出力ファイルを読み込む際のパス。Urlという名前だけどパス指定。 |
| verbose | false | ビルド時の出力 |
| progress | true | ビルド時の進捗度合い表示 |
| i18nFile | | i18n(国際化)で利用するファイル |
| i18nFormat | | i18nで利用するフォーマット |
| i18nLocale | | i18nで利用するロケール |
| i18nMissingTranslation | | i18nで訳がない場合の出力 |
| extractCss | false | グローバル指定のcssを展開する |
| watch | false | ファイル変更を監視して自動的に再ビルドする |
| outputHashing | "none" | 出力ファイル名にハッシュをつける。キャッシュバスター。"none","all","media","bundles" |
| poll | | watchする際の監視間隔をミリ秒で設定 |
| deleteOutputPath | true | ビルド前にoutputPathを削除する |
| preserveSymlinks | false | シンボリックリンクをリアルパスに変換する |
| extractLicenses | true | 利用ライブラリのライセンスファイルをまとめる |
| showCircularDependencies | true | 循環参照を表示する |
| buildOptimizer | false | aot利用時、@angular-devkit/build-optimizerを有効にする |
| namedChunks | true | 遅延読み込みのファイルに名前をつける |
| subresourceIntegrity | false | サブリソース。（よくわかっていない） |
| serviceWorker | false | ServiceWorkerのconfigを出力する |
| ngswConfigPath | | ngsw-configファイルへのパス。ServiceWorker関連。 |
| skipAppShell | false | app-shell関連をビルドしない |
| index | | index.htmlファイルのパス |
| statsJson | false | webpack-bundle-analyzer で使うstats.jsonの出力 |
| forkTypeChecker | true | TypeScriptの型チェッカーをforkモードで使う |
| lazyModules | [] | 遅延読み込みするNgModuleのリスト。大抵はrouterモジュールが自動的にやってくれる。 |
| budgets | [] | 生成ファイルのファイルサイズ制限を設定できる。気軽に巨大なライブラリをimportすると使わないコードが大量に含まれてしまったりするのを警告する。 |


#### build-angular:devServer の option設定の中身
| 項目名 | 初期値 | 説明 |
|-----------|------------|------------|
| browserTarget | | 対象にするbuild |
| port | 4200 | ポート。複数アプリ開発時に4201等違うポートに設定できる。 |
| host | "localhost" | ホスト。0.0.0.0等にすると同じLAN内の違うマシンからアクセスできる。別OSやスマホからの確認に。|
| proxyConfig | | proxyConfigファイルのパス |
| ssl | false | SSL設定 |
| sslKey | | SSL設定 |
| sslCert | | SSL設定 |
| open | false | 初回ビルド時にデフォルトブラウザを開く |
| liveReload | true | ビルド時に自動リロードする |
| publicHost | | ホスト名の制限 |
| servePath | | サーブするパス |
| disableHostCheck | false | ホスト名のチェック |
| hmr | false | hot module replacementを有効にする |
| watch | true | ファイル変更を監視して自動的に再ビルドする |
| hmrWarning | true | hmr有効にする時の警告を表示する |
| servePathDefaultWarning | true | deploy-url/base-hrefが利用されている際の警告を表示する |
| optimization | | 最適化する。{scripts: true, styles: false} というような個別設定も可能 |
| aot | | Ahead of Time compilation（事前コンパイル）を有効にする |
| sourceMap | true | sourceMapを出力する。{scripts: true, styles: true, hidden: false, vendor: true}というような個別設定も可能 |
| vendorSourceMap | false | ライブラリのsourceMapを出力する |
| evalSourceMap | | in-file evalスタイルのsourceMapを出力する |
| vendorChunk | | ライブラリだけで単独のファイルにする。ライブラリは変更頻度が低いため。 |
| commonChunk | | 複数にまたがるコードを共通ファイルにする。 |
| baseHref | | index.htmlに<base>タグとして出力されるパス。サブフォルダで使うような場合に設定する。 |
| deployUrl | | 出力ファイルを読み込む際のパス。Urlという名前だけどパス指定。 |
| verbose | | ビルド時の出力 |
| progress | | ビルド時の進捗度合い表示 |