diff --git a/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.spec.ts b/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.spec.ts index 8008dc9c64ca..cfb52dc1fc58 100644 --- a/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.spec.ts +++ b/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.spec.ts @@ -45,4 +45,24 @@ describe('ng-update project-tsconfig-paths', () => { expect(getProjectTsConfigPaths(testTree)).toEqual(['tsconfig.json']); }); + + it('should be able to read workspace configuration which is using JSON5 features', () => { + testTree.create('/my-build-config.json', ''); + testTree.create('/angular.json', `{ + // Comments, unquoted properties or trailing commas are only supported in JSON5. + projects: { + with_tests: { + targets: { + build: { + options: { + tsConfig: './my-build-config.json', + } + } + } + } + }, + }`); + + expect(getProjectTsConfigPaths(testTree)).toEqual(['my-build-config.json']); + }); }); diff --git a/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.ts b/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.ts index 0aa9164f6eda..0cc0700520a9 100644 --- a/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.ts +++ b/src/cdk/schematics/ng-update/upgrade-rules/project-tsconfig-paths.ts @@ -6,7 +6,7 @@ * found in the LICENSE file at https://angular.io/license */ -import {normalize} from '@angular-devkit/core'; +import {JsonParseMode, normalize, parseJson} from '@angular-devkit/core'; import {Tree} from '@angular-devkit/schematics'; /** Name of the default Angular CLI workspace configuration files. */ @@ -63,7 +63,9 @@ function getWorkspaceConfigGracefully(tree: Tree): any { } try { - return JSON.parse(configBuffer.toString()); + // Parse the workspace file as JSON5 which is also supported for CLI + // workspace configurations. + return parseJson(configBuffer.toString(), JsonParseMode.Json5); } catch { return null; }