Angular-cli 忽略 tsconfig.json

Angular-cli ignores tsconfig.json

正在使用

"@angular/cli": "^1.0.0"

@angular/cli 忽略 tsconfig.json

项目编译好编辑/删除tsconfig.json

这是为什么?

angular-cli 的 tsconfig.json 文件位于 src/tsconfig.app.json

中,尽管看起来很愚蠢

tsconfig.json 将被编辑器使用(例如 vscode)。

你的项目编译 没有 $ROOT/tsconfig.json 的原因是 @angular/cli 在根目录中支持 多个 应用程序目录;您的(单个)应用程序正在使用 $ROOT/src/tsconfig.app.json 进行编译,您的测试套件使用 $ROOT/src/tsconfig.spec.json 进行编译。根 tsconfig.json 适用于目录中的 所有 应用程序。删除它只是删除了可能与许多应用程序一起使用的 global tsconfig

为了更清楚地了解这一点,请查看 .angular-cli.json。一个属性,app,支持多个应用的​​数组,但默认配置是单独一个应用。如@angular/cli/lib/config/schema.json所述,app支持"properties of the different applications in this project."

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

使用此数组,您可以拥有任意数量的 Angular 个应用程序,每个应用程序都有自己特定的 TypeScript 设置。

此外,@angular/cli 的命令支持带有 --app 标志的多个应用程序。 ng serve --app foo 将为 foo 应用提供服务,而 ng serve --app bar 将为 bar 应用提供服务。此标志也适用于 ng buildng e2eng ejectng testng xi18n。要将新应用程序添加到现有 $ROOT 目录,请使用 ng new

tsconfig 不仅适用于代码编辑器和 tslint。它全局适用于您项目中的所有应用程序。这在引擎盖下是如何工作的相当复杂,从 the source code 中可以清楚地看出,其中有许多 json 文件包含诸如 "extends": "../../../tsconfig.json" 之类的行。