typescript - Angular-cli ignorerer tsconfig.json


Bruker

"@angular/cli": "^1.0.0"

@angular/cli ignorerer tsconfig.json

Prosjektet kompilerer helt fint når man redigerer/fjerner tsconfig.json

Hvorfor er det?

Svar #1

Så dumt som det kan virke, ligger angular-cli sitt tsconfig.json-fil inni src/tsconfig.app.json

Rot tsconfig.json vil bli brukt av redaktører (som vscode).

Svar #2

Årsaken til at prosjektet ditt kompilerer uten $ROOT/tsconfig.json er at @angular/cli støtter flere apper innenfor rotmappen; din (enkelt) app kompilerer med $ROOT/src/tsconfig.app.json og testpakken din med $ROOT/src/tsconfig.spec.json. Rot-tsconfig.json gjelder for alle apper i mappen. Å slette den fjernet rett og slett den globale tsconfig som potensielt kunne brukes med mange apper.

For en klarere forståelse av dette, se på .angular-cli.json. En egenskap, app, støtter et array av flere applikasjoner, men standardkonfigurasjonen er for kun én applikasjon. Som beskrevet i @angular/cli/lib/config/schema.json, støtter app "egenskaper for de forskjellige applikasjonene i dette prosjektet."

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

Ved å bruke dette arrayet, kan du ha så mange Angular-apper du vil, hver med sine egne spesifikke TypeScript-innstillinger.

I tillegg støtter @angular/cli's kommandoer flere applikasjoner med --app-flagget. ng serve --app foo vil servere foo-appen, mens ng serve --app bar vil servere bar-appen. Dette flagget fungerer også med ng build, ng e2e, ng eject, ng test og ng xi18n. For å legge til en ny app i din eksisterende $ROOT-mappe, bruk ng new.

Rotfilen tsconfig er ikke bare for kodeeditorer og tslint. Den gjelder globalt for alle apper i prosjektet ditt. Hvordan dette fungerer under panseret er ganske komplekst, noe som er tydelig fra kildekoden, hvor det finnes mange JSON-filer som har linjer som "extends": "../../../tsconfig.json".

Relaterte artikler