diff --git a/packages/schematics/angular/migrations/update-9/ivy-libraries.ts b/packages/schematics/angular/migrations/update-9/ivy-libraries.ts index 7a13886e26f8..465dca05a563 100644 --- a/packages/schematics/angular/migrations/update-9/ivy-libraries.ts +++ b/packages/schematics/angular/migrations/update-9/ivy-libraries.ts @@ -5,6 +5,8 @@ * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.io/license */ + +import { join, normalize } from '@angular-devkit/core'; import { Rule, Tree } from '@angular-devkit/schematics'; import { getWorkspacePath } from '../../utility/config'; import { @@ -36,7 +38,7 @@ export function updateLibraries(): Rule { } const configurations = findPropertyInAstObject(target, 'configurations'); - const tsConfig = `${projectRoot.value}/tsconfig.lib.prod.json`; + const tsConfig = join(normalize(projectRoot.value), 'tsconfig.lib.prod.json'); if (!configurations || configurations.kind !== 'object') { // Configurations doesn't exist. diff --git a/packages/schematics/angular/migrations/update-9/ivy-libraries_spec.ts b/packages/schematics/angular/migrations/update-9/ivy-libraries_spec.ts index f3429f0ab29f..3c9679ba6ff1 100644 --- a/packages/schematics/angular/migrations/update-9/ivy-libraries_spec.ts +++ b/packages/schematics/angular/migrations/update-9/ivy-libraries_spec.ts @@ -64,6 +64,20 @@ describe('Migration to version 9', () => { tree.delete(libProdTsConfig); }); + it(`should add 'tsConfig' option with correct path when 'root' is an empty string`, async () => { + let config = JSON.parse(tree.readContent(workspacePath)); + const projectConfig = config.projects['migration-lib']; + projectConfig.architect.build.configurations = undefined; + projectConfig.root = ''; + tree.overwrite(workspacePath, JSON.stringify(config, undefined, 2)); + + const libProdTsConfigPath = 'tsconfig.lib.prod.json'; + const tree2 = await schematicRunner.runSchematicAsync('workspace-version-9', {}, tree.branch()).toPromise(); + config = getWorkspaceTargets(tree2).build; + expect(config.configurations.production.tsConfig).toEqual(libProdTsConfigPath); + expect(tree2.exists(libProdTsConfigPath)).toBeTruthy(); + }); + it(`should add 'tsConfig' option in production when configurations doesn't exists`, async () => { let config = getWorkspaceTargets(tree); config.build.configurations = undefined;