web-dev-qa-db-ja.com

Angular-cliはtsconfig.jsonを無視します

使用する

"@angular/cli": "^1.0.0"

@angular/clitsconfig.jsonを無視します

プロジェクトは、tsconfig.jsonを細かく編集/削除するだけでコンパイルされます。

何故ですか?

8
zurfyx

ばかげているように見えるかもしれませんが、angular-cliのtsconfig.jsonファイルはsrc/tsconfig.app.json内にあります。

ルートtsconfig.jsonは、エディター(vscodeなど)によって使用されます。

5
zurfyx

プロジェクトがwithout$ROOT/tsconfig.jsonでコンパイルされる理由は、@angular/climultipleルートディレクトリ内のアプリ。 (単一の)アプリは$ROOT/src/tsconfig.app.jsonでコンパイルされ、テストスイートは$ROOT/src/tsconfig.spec.jsonでコンパイルされます。ルートtsconfig.jsonは、ディレクトリ内のallアプリに適用されます。それを削除すると、多くのアプリで使用される可能性のあるglobaltsconfigが削除されただけです。

これをより明確に理解するには、.angular-cli.jsonを参照してください。 1つのプロパティappは複数のアプリケーションの配列をサポートしますが、デフォルトの構成は1つのアプリケーションのみです。 @angular/cli/lib/config/schema.jsonで説明されているように、appは「このプロジェクトのさまざまなアプリケーションのプロパティ」をサポートします。

"app": [{
  "root": "src"
  ...
  "tsconfig": "tsconfig.app.json",
  "testTsconfig": "tsconfig.spec.json"
}]

この配列を使用すると、Angularアプリをいくつでも持つことができ、それぞれに固有のTypeScript設定があります。

さらに、@angular/cliのコマンドは、--appフラグを持つ複数のアプリケーションをサポートします。 ng serve --app foofooアプリを提供し、ng serve --app barbarアプリを提供します。このフラグは、ng buildng e2eng ejectng test、およびng xi18nでも機能します。既存の$ROOTディレクトリに新しいアプリを追加するには、ng newを使用します。

ルートtsconfigは、コードエディタやtslintだけのものではありません。プロジェクト内のすべてのアプリにグローバルに適用されます。 ソースコード から明らかなように、これが内部でどのように機能するかはかなり複雑です。ここには、"extends": "../../../tsconfig.json"などの行を持つ多数のjsonファイルがあります。

8
jfmercer