Usando
"@angular/cli": "^1.0.0" @angular/cli ignora tsconfig.json
El proyecto compila muy bien editando/eliminando tsconfig.json
¿Porqué es eso?
La razón por la que su proyecto se compila sin $ROOT/tsconfig.json es que @angular/cli admite varias aplicaciones dentro del directorio raíz; su aplicación (única) se está compilando con $ROOT/src/tsconfig.app.json y su conjunto de pruebas con $ROOT/src/tsconfig.spec.json . La raíz tsconfig.json se aplica a todas las aplicaciones dentro del directorio. Eliminarlo simplemente eliminó el tsconfig global que podría usarse potencialmente con muchas aplicaciones.
Para una comprensión más clara de esto, consulte .angular-cli.json . Una propiedad, app , admite una matriz de múltiples aplicaciones, pero la configuración predeterminada es para una sola aplicación. Como se describe en @angular/cli/lib/config/schema.json , la app admite "propiedades de las diferentes aplicaciones en este proyecto".
"app": [{ "root": "src" ... "tsconfig": "tsconfig.app.json", "testTsconfig": "tsconfig.spec.json" }]Con esta matriz, puede tener tantas aplicaciones Angular como desee, cada una con su propia configuración específica de TypeScript.
Además, los comandos de @angular/cli admiten múltiples aplicaciones con el indicador --app . ng serve --app foo servirá la aplicación foo , mientras que ng serve --app bar servirá la aplicación bar . Esta bandera también funciona con ng build , ng e2e , ng eject eject , ng test y ng xi18n . Para agregar una nueva aplicación a su directorio $ROOT existente, use ng new .
La raíz tsconfig no es solo para editores de código y tslint . Se aplica globalmente a todas las aplicaciones de su proyecto. Cómo funciona esto bajo el capó es bastante complejo, como se desprende claramente del código fuente , donde hay numerosos archivos json que tienen líneas como "extends": "../../../tsconfig.json" .
Por estúpido que parezca, el archivo tsconfig.json de angular-cli se encuentra dentro src/tsconfig.app.json
Los editores (como vscode) utilizarán la raíz tsconfig.json .