Skip to content

Commit d800b25

Browse files
committed
fix(@schematics/angular): add links to generated tsconfig files
We now add a link to generated tsconfig.json to make is easier for users to find relevant information.
1 parent 4243c9e commit d800b25

17 files changed

+88
-49
lines changed

packages/schematics/angular/application/files/tsconfig.app.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/application/files/tsconfig.spec.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/application/index_spec.ts

+22-15
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ import { getFileContent } from '../utility/test';
1313
import { Schema as WorkspaceOptions } from '../workspace/schema';
1414
import { Schema as ApplicationOptions, Style, ViewEncapsulation } from './schema';
1515

16+
// tslint:disable-next-line: no-any
17+
function readJsonFile(tree: UnitTestTree, path: string): any {
18+
return parseJson(tree.readContent(path).toString(), JsonParseMode.Loose);
19+
}
20+
1621
describe('Application Schematic', () => {
1722
const schematicRunner = new SchematicTestRunner(
1823
'@schematics/angular',
@@ -79,8 +84,7 @@ describe('Application Schematic', () => {
7984
const tree = await schematicRunner.runSchematicAsync('application', defaultOptions, workspaceTree)
8085
.toPromise();
8186

82-
// tslint:disable-next-line:no-any
83-
const { references } = parseJson(tree.readContent('/tsconfig.json').toString(), JsonParseMode.Loose) as any;
87+
const { references } = readJsonFile(tree, '/tsconfig.json');
8488
expect(references).toEqual([
8589
{ path: './projects/foo/tsconfig.app.json' },
8690
{ path: './projects/foo/tsconfig.spec.json' },
@@ -147,17 +151,20 @@ describe('Application Schematic', () => {
147151
expect(content).toContain(`import { enableProdMode, ViewEncapsulation } from '@angular/core'`);
148152
});
149153

150-
it('should set the right paths in the tsconfig files', async () => {
154+
it('should set the right paths in the tsconfig.app.json', async () => {
155+
const tree = await schematicRunner.runSchematicAsync('application', defaultOptions, workspaceTree)
156+
.toPromise();
157+
const { files, extends: _extends } = readJsonFile(tree, '/projects/foo/tsconfig.app.json');
158+
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
159+
expect(_extends).toBe('../../tsconfig.base.json');
160+
});
161+
162+
it('should set the right paths in the tsconfig.spec.json', async () => {
151163
const tree = await schematicRunner.runSchematicAsync('application', defaultOptions, workspaceTree)
152164
.toPromise();
153-
let path = '/projects/foo/tsconfig.app.json';
154-
let content = tree.readContent(path);
155-
expect(content).toMatch('../../tsconfig.base.json');
156-
path = '/projects/foo/tsconfig.spec.json';
157-
content = tree.readContent(path);
158-
expect(content).toMatch('../../tsconfig.base.json');
159-
const specTsConfig = JSON.parse(content);
160-
expect(specTsConfig.files).toEqual(['src/test.ts', 'src/polyfills.ts']);
165+
const { files, extends: _extends } = readJsonFile(tree, '/projects/foo/tsconfig.spec.json');
166+
expect(files).toEqual(['src/test.ts', 'src/polyfills.ts']);
167+
expect(_extends).toBe('../../tsconfig.base.json');
161168
});
162169

163170
it('should set the right path and prefix in the tslint file', async () => {
@@ -384,9 +391,9 @@ describe('Application Schematic', () => {
384391
const options = { ...defaultOptions, projectRoot: '' };
385392
const tree = await schematicRunner.runSchematicAsync('application', options, workspaceTree)
386393
.toPromise();
387-
const appTsConfig = JSON.parse(tree.readContent('/tsconfig.app.json'));
394+
const appTsConfig = readJsonFile(tree, '/tsconfig.app.json');
388395
expect(appTsConfig.extends).toEqual('./tsconfig.base.json');
389-
const specTsConfig = JSON.parse(tree.readContent('/tsconfig.spec.json'));
396+
const specTsConfig = readJsonFile(tree, '/tsconfig.spec.json');
390397
expect(specTsConfig.extends).toEqual('./tsconfig.base.json');
391398
expect(specTsConfig.files).toEqual(['src/test.ts', 'src/polyfills.ts']);
392399
});
@@ -427,9 +434,9 @@ describe('Application Schematic', () => {
427434
expect(buildOpt.polyfills).toEqual('foo/src/polyfills.ts');
428435
expect(buildOpt.tsConfig).toEqual('foo/tsconfig.app.json');
429436

430-
const appTsConfig = JSON.parse(tree.readContent('/foo/tsconfig.app.json'));
437+
const appTsConfig = readJsonFile(tree, '/foo/tsconfig.app.json');
431438
expect(appTsConfig.extends).toEqual('../tsconfig.base.json');
432-
const specTsConfig = JSON.parse(tree.readContent('/foo/tsconfig.spec.json'));
439+
const specTsConfig = readJsonFile(tree, '/foo/tsconfig.spec.json');
433440
expect(specTsConfig.extends).toEqual('../tsconfig.base.json');
434441
});
435442
});

packages/schematics/angular/e2e/files/tsconfig.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/library/files/tsconfig.lib.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/library/files/tsconfig.lib.prod.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "./tsconfig.lib.json",
34
"angularCompilerOptions": {

packages/schematics/angular/library/files/tsconfig.spec.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/library/index_spec.ts

+9-8
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ import { latestVersions } from '../utility/latest-versions';
1414
import { Schema as WorkspaceOptions } from '../workspace/schema';
1515
import { Schema as GenerateLibrarySchema } from './schema';
1616

17-
function getJsonFileContent(tree: UnitTestTree, path: string) {
18-
return JSON.parse(tree.readContent(path));
17+
// tslint:disable-next-line: no-any
18+
function getJsonFileContent(tree: UnitTestTree, path: string): any {
19+
return parseJson(tree.readContent(path).toString(), JsonParseMode.Loose);
1920
}
2021

2122
describe('Library Schematic', () => {
@@ -264,13 +265,13 @@ describe('Library Schematic', () => {
264265
const pkgJson = JSON.parse(tree.readContent(pkgJsonPath));
265266
expect(pkgJson.name).toEqual(scopedName);
266267

267-
const tsConfigJson = JSON.parse(tree.readContent('/projects/myscope/mylib/tsconfig.spec.json'));
268+
const tsConfigJson = getJsonFileContent(tree, '/projects/myscope/mylib/tsconfig.spec.json');
268269
expect(tsConfigJson.extends).toEqual('../../../tsconfig.base.json');
269270

270271
const cfg = JSON.parse(tree.readContent('/angular.json'));
271272
expect(cfg.projects['@myscope/mylib']).toBeDefined();
272273

273-
const rootTsCfg = JSON.parse(tree.readContent('/tsconfig.base.json'));
274+
const rootTsCfg = getJsonFileContent(tree, '/tsconfig.base.json');
274275
expect(rootTsCfg.compilerOptions.paths['@myscope/mylib']).toEqual(['dist/myscope/mylib/myscope-mylib', 'dist/myscope/mylib']);
275276

276277
const karmaConf = getFileContent(tree, '/projects/myscope/mylib/karma.conf.js');
@@ -307,16 +308,16 @@ describe('Library Schematic', () => {
307308
const workspaceTree = await schematicRunner.runSchematicAsync('workspace', { ...workspaceOptions, newProjectRoot: '' }).toPromise();
308309
const tree = await schematicRunner.runSchematicAsync('library', defaultOptions, workspaceTree)
309310
.toPromise();
310-
const config = JSON.parse(tree.readContent('/angular.json'));
311+
const config = getJsonFileContent(tree, '/angular.json');
311312
const project = config.projects.foo;
312313
expect(project.root).toEqual('foo');
313314
const buildOpt = project.architect.build.options;
314315
expect(buildOpt.project).toEqual('foo/ng-package.json');
315316
expect(buildOpt.tsConfig).toEqual('foo/tsconfig.lib.json');
316317

317-
const appTsConfig = JSON.parse(tree.readContent('/foo/tsconfig.lib.json'));
318+
const appTsConfig = getJsonFileContent(tree, '/foo/tsconfig.lib.json');
318319
expect(appTsConfig.extends).toEqual('../tsconfig.base.json');
319-
const specTsConfig = JSON.parse(tree.readContent('/foo/tsconfig.spec.json'));
320+
const specTsConfig = getJsonFileContent(tree, '/foo/tsconfig.spec.json');
320321
expect(specTsConfig.extends).toEqual('../tsconfig.base.json');
321322
});
322323

@@ -333,7 +334,7 @@ describe('Library Schematic', () => {
333334
.toPromise();
334335

335336
// tslint:disable-next-line:no-any
336-
const { references } = parseJson(tree.readContent('/tsconfig.json').toString(), JsonParseMode.Loose) as any;
337+
const { references } = getJsonFileContent(tree, '/tsconfig.json');
337338
expect(references).toEqual([
338339
{ path: './projects/foo/tsconfig.lib.json' },
339340
{ path: './projects/foo/tsconfig.spec.json' },

packages/schematics/angular/migrations/update-10/solution-style-tsconfig.ts

+7-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ import { DirEntry, Rule, chain } from '@angular-devkit/schematics';
1010
import { findPropertyInAstObject } from '../../utility/json-utils';
1111
import { getWorkspace } from '../../utility/workspace';
1212

13-
const SOLUTIONS_TS_CONFIG_HEADER = '// This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s' +
14-
'language server to improve development experience.\n' +
15-
'// It is not intended to be used to perform a compilation.\n';
13+
const SOLUTIONS_TS_CONFIG_HEADER = `/*
14+
This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience.
15+
It is not intended to be used to perform a compilation.
16+
17+
To learn more about this file see: https://angular.io/config/solution-tsconfig.
18+
*/
19+
`;
1620

1721
function* visitExtendedJsonFiles(directory: DirEntry): IterableIterator<[string, JsonAstString]> {
1822
for (const path of directory.subfiles) {

packages/schematics/angular/migrations/update-9/update-app-tsconfigs_spec.ts

+18-13
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@
66
* found in the LICENSE file at https://angular.io/license
77
*/
88

9+
import { JsonParseMode, JsonValue, parseJson } from '@angular-devkit/core';
910
import { EmptyTree } from '@angular-devkit/schematics';
1011
import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
1112
import { getWorkspaceTargets, updateWorkspaceTargets } from './update-workspace-config_spec';
1213

1314
// tslint:disable-next-line: no-any
15+
function readJsonFile(tree: UnitTestTree, path: string): any {
16+
return parseJson(tree.readContent(path).toString(), JsonParseMode.Loose);
17+
}
18+
1419
function overrideJsonFile(tree: UnitTestTree, path: string, newContent: object) {
1520
tree.overwrite(path, JSON.stringify(newContent, undefined, 2));
1621
}
@@ -63,7 +68,7 @@ describe('Migration to version 9', () => {
6368
it('should update apps tsConfig with stricter files inclusions', async () => {
6469
overrideJsonFile(tree, 'tsconfig.app.json', defaultTsConfigOptions);
6570
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
66-
const { exclude, files, include } = JSON.parse(tree2.readContent('tsconfig.app.json'));
71+
const { exclude, files, include } = readJsonFile(tree2 , 'tsconfig.app.json');
6772
expect(exclude).toBeUndefined();
6873
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
6974
expect(include).toEqual(['src/**/*.d.ts']);
@@ -90,7 +95,7 @@ describe('Migration to version 9', () => {
9095
updateWorkspaceTargets(tree2, config, 'another-app');
9196

9297
const tree3 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree2.branch()).toPromise();
93-
const { exclude, files } = JSON.parse(tree3.readContent(tsCfgPath));
98+
const { exclude, files } = readJsonFile(tree3, tsCfgPath);
9499
expect(exclude).toBeUndefined();
95100
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
96101
});
@@ -104,7 +109,7 @@ describe('Migration to version 9', () => {
104109
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
105110

106111
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
107-
const { files, include } = JSON.parse(tree2.readContent('tsconfig.app.json'));
112+
const { files, include } = readJsonFile(tree2, 'tsconfig.app.json');
108113
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
109114
expect(include).toEqual(['foo.ts']);
110115
});
@@ -119,7 +124,7 @@ describe('Migration to version 9', () => {
119124
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
120125

121126
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
122-
const { files, include, exclude } = JSON.parse(tree2.readContent('tsconfig.app.json'));
127+
const { files, include, exclude } = readJsonFile(tree2, 'tsconfig.app.json');
123128
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
124129
expect(include).toEqual(['src/**/*.d.ts']);
125130
expect(exclude).toBeUndefined();
@@ -134,7 +139,7 @@ describe('Migration to version 9', () => {
134139
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
135140

136141
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
137-
const { files, include, exclude } = JSON.parse(tree2.readContent('tsconfig.app.json'));
142+
const { files, include, exclude } = readJsonFile(tree2, 'tsconfig.app.json');
138143
expect(files).toEqual(['src/main.ts', 'src/polyfills.ts']);
139144
expect(include).toEqual(['foo.ts', 'src/**/*.d.ts']);
140145
expect(exclude).toBeUndefined();
@@ -143,7 +148,7 @@ describe('Migration to version 9', () => {
143148
it(`should remove angularCompilerOptions when enableIvy is true and it's the only option`, async () => {
144149
overrideJsonFile(tree, 'tsconfig.app.json', defaultTsConfigOptions);
145150
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
146-
const { angularCompilerOptions } = JSON.parse(tree2.readContent('tsconfig.app.json'));
151+
const { angularCompilerOptions } = readJsonFile(tree2, 'tsconfig.app.json');
147152
expect(angularCompilerOptions).toBeUndefined();
148153
});
149154

@@ -158,7 +163,7 @@ describe('Migration to version 9', () => {
158163

159164
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
160165
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
161-
const { angularCompilerOptions } = JSON.parse(tree2.readContent('tsconfig.app.json'));
166+
const { angularCompilerOptions } = readJsonFile(tree2, 'tsconfig.app.json');
162167
expect(angularCompilerOptions.enableIvy).toBeUndefined();
163168
expect(angularCompilerOptions.fullTemplateTypeCheck).toBe(true);
164169
});
@@ -174,7 +179,7 @@ describe('Migration to version 9', () => {
174179

175180
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
176181
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
177-
const { angularCompilerOptions } = JSON.parse(tree2.readContent('tsconfig.app.json'));
182+
const { angularCompilerOptions } = readJsonFile(tree2, 'tsconfig.app.json');
178183
expect(angularCompilerOptions.enableIvy).toBe(false);
179184
expect(angularCompilerOptions.fullTemplateTypeCheck).toBe(true);
180185
});
@@ -190,10 +195,10 @@ describe('Migration to version 9', () => {
190195

191196
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
192197
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
193-
const { compilerOptions } = JSON.parse(tree2.readContent('tsconfig.app.json'));
198+
const { compilerOptions } = readJsonFile(tree2, 'tsconfig.app.json');
194199
expect(compilerOptions.module).toBeUndefined();
195200

196-
const { compilerOptions: workspaceCompilerOptions } = JSON.parse(tree2.readContent('tsconfig.json'));
201+
const { compilerOptions: workspaceCompilerOptions } = readJsonFile(tree2, 'tsconfig.json');
197202
expect(workspaceCompilerOptions.module).toBe('esnext');
198203
});
199204

@@ -209,7 +214,7 @@ describe('Migration to version 9', () => {
209214

210215
overrideJsonFile(tree, 'tsconfig.app.json', tsConfigContent);
211216
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
212-
const { compilerOptions } = JSON.parse(tree2.readContent('tsconfig.app.json'));
217+
const { compilerOptions } = readJsonFile(tree2, 'tsconfig.app.json');
213218
expect(compilerOptions.module).toBe('esnext');
214219
});
215220

@@ -238,7 +243,7 @@ describe('Migration to version 9', () => {
238243

239244
overrideJsonFile(tree, 'tsconfig.server.json', tsConfigContent);
240245
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
241-
const { compilerOptions } = JSON.parse(tree2.readContent('tsconfig.server.json'));
246+
const { compilerOptions } = readJsonFile(tree2, 'tsconfig.server.json');
242247
expect(compilerOptions.module).toBe('commonjs');
243248
});
244249

@@ -250,7 +255,7 @@ describe('Migration to version 9', () => {
250255

251256
overrideJsonFile(tree, 'tsconfig.json', tsConfigContent);
252257
const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise();
253-
const { compilerOptions } = JSON.parse(tree2.readContent('tsconfig.json'));
258+
const { compilerOptions } = readJsonFile(tree2, 'tsconfig.json');
254259
expect(compilerOptions.module).toBe('esnext');
255260
});
256261
});

packages/schematics/angular/universal/files/root/tsconfig.server.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "./<%= tsConfigExtends %>",
34
"compilerOptions": {

packages/schematics/angular/universal/index_spec.ts

+6-4
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ describe('Universal Schematic', () => {
8787
.toPromise();
8888
const filePath = '/tsconfig.server.json';
8989
expect(tree.exists(filePath)).toEqual(true);
90-
const contents = tree.readContent(filePath);
91-
expect(JSON.parse(contents)).toEqual({
90+
// tslint:disable-next-line: no-any
91+
const contents = parseJson(tree.readContent(filePath).toString(), JsonParseMode.Loose) as any;
92+
expect(contents).toEqual({
9293
extends: './tsconfig.app.json',
9394
compilerOptions: {
9495
outDir: './out-tsc/server',
@@ -112,8 +113,9 @@ describe('Universal Schematic', () => {
112113
.toPromise();
113114
const filePath = '/projects/bar/tsconfig.server.json';
114115
expect(tree.exists(filePath)).toEqual(true);
115-
const contents = tree.readContent(filePath);
116-
expect(JSON.parse(contents)).toEqual({
116+
// tslint:disable-next-line: no-any
117+
const contents = parseJson(tree.readContent(filePath).toString(), JsonParseMode.Loose) as any;
118+
expect(contents).toEqual({
117119
extends: './tsconfig.app.json',
118120
compilerOptions: {
119121
outDir: '../../out-tsc/server',

packages/schematics/angular/web-worker/files/worker-tsconfig/tsconfig.worker.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"extends": "<%= relativePathToWorkspaceRoot %>/tsconfig.base.json",
34
"compilerOptions": {

packages/schematics/angular/web-worker/index_spec.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ describe('Web Worker Schematic', () => {
5959
const path = '/projects/bar/tsconfig.worker.json';
6060
expect(tree.exists(path)).toEqual(true);
6161

62-
const { compilerOptions } = JSON.parse(tree.readContent(path));
62+
// tslint:disable-next-line: no-any
63+
const { compilerOptions } = parseJson(tree.readContent(path).toString(), JsonParseMode.Loose) as any;
6364
expect(compilerOptions.outDir).toBe('../../out-tsc/worker');
6465
});
6566

@@ -123,7 +124,8 @@ describe('Web Worker Schematic', () => {
123124
const path = '/tsconfig.worker.json';
124125
expect(tree.exists(path)).toEqual(true);
125126

126-
const { compilerOptions } = JSON.parse(tree.readContent(path));
127+
// tslint:disable-next-line: no-any
128+
const { compilerOptions } = parseJson(tree.readContent(path).toString(), JsonParseMode.Loose) as any;
127129
expect(compilerOptions.outDir).toBe('./out-tsc/worker');
128130
});
129131

packages/schematics/angular/workspace/files/tsconfig.base.json.template

+1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/* To learn more about this file see: https://angular.io/config/tsconfig. */
12
{
23
"compileOnSave": false,
34
"compilerOptions": {

packages/schematics/angular/workspace/files/tsconfig.json.template

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
1-
// This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience.
2-
// It is not intended to be used to perform a compilation.
1+
/*
2+
This is a "Solution Style" tsconfig.json file, and is used by editors and TypeScript’s language server to improve development experience.
3+
It is not intended to be used to perform a compilation.
4+
5+
To learn more about this file see: https://angular.io/config/solution-tsconfig.
6+
*/
37
{
48
"files": [],
59
"references": []

0 commit comments

Comments
 (0)