简体   繁体   中英

Angular-cli ignores tsconfig.json

Using

"@angular/cli": "^1.0.0"

@angular/cli ignores tsconfig.json

The project compiles just fine editing / removing tsconfig.json

Why is that?

The reason that your project compiles without $ROOT/tsconfig.json is that @angular/cli supports multiple apps within the root directory; your (single) app is compiling with $ROOT/src/tsconfig.app.json and your test suite with $ROOT/src/tsconfig.spec.json . The root tsconfig.json applies to all apps within the directory. Deleting it simply removed the global tsconfig that could potentially be used with many apps.

For a clearer understanding of this, look at .angular-cli.json . One property, app , supports an array of multiple applications, but the default configuration is for one application alone. As described in @angular/cli/lib/config/schema.json , app supports "properties of the different applications in this project."

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

Using this array, you could have as many Angular apps as you like, each with its own specific TypeScript settings.

Additionally, @angular/cli 's commands support multiple applications with the --app flag. ng serve --app foo will serve the foo app, whereas ng serve --app bar will serve the bar app. This flag also works with ng build , ng e2e , ng eject , ng test , and ng xi18n . To add a new app to your existing $ROOT directory, use ng new .

The root tsconfig is not just for code editors and tslint . It applies globally to all apps in your project. How this works under the hood is rather complex, as is clear from the source code , where there are numerous json files that have lines such as "extends": "../../../tsconfig.json" .

As stupid as it may seem, the angular-cli 's tsconfig.json file is located inside src/tsconfig.app.json

The root tsconfig.json will be used by editors (such as vscode).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM