diff --git a/packages/compiler-cli/src/perform_compile.ts b/packages/compiler-cli/src/perform_compile.ts index 57ba6bf78b..059677d9c4 100644 --- a/packages/compiler-cli/src/perform_compile.ts +++ b/packages/compiler-cli/src/perform_compile.ts @@ -120,10 +120,11 @@ export function calcProjectFileAndBasePath(project: string): export function createNgCompilerOptions( basePath: string, config: any, tsOptions: ts.CompilerOptions): api.CompilerOptions { // enableIvy `ngtsc` is an alias for `true`. - if (config.angularCompilerOptions && config.angularCompilerOptions.enableIvy === 'ngtsc') { - config.angularCompilerOptions.enableIvy = true; - } - return {...tsOptions, ...config.angularCompilerOptions, genDir: basePath, basePath}; + const {angularCompilerOptions = {}} = config; + const {enableIvy} = angularCompilerOptions; + angularCompilerOptions.enableIvy = enableIvy !== false && enableIvy !== 'tsc'; + + return {...tsOptions, ...angularCompilerOptions, genDir: basePath, basePath}; } export function readConfiguration( diff --git a/packages/compiler-cli/test/perform_compile_spec.ts b/packages/compiler-cli/test/perform_compile_spec.ts index 9c838783e0..8696ab1955 100644 --- a/packages/compiler-cli/test/perform_compile_spec.ts +++ b/packages/compiler-cli/test/perform_compile_spec.ts @@ -55,4 +55,26 @@ describe('perform_compile', () => { expect(options.skipMetadataEmit).toBe(true); }); + it(`should return 'enableIvy: true' when enableIvy is not defined in "angularCompilerOptions"`, + () => { + writeSomeConfigs(); + const {options} = readConfiguration(path.resolve(basePath, 'tsconfig-level-1.json')); + expect(options.enableIvy).toBe(true); + }); + + it(`should return 'enableIvy: false' when enableIvy is disabled in "angularCompilerOptions"`, + () => { + writeSomeConfigs(); + support.writeFiles({ + 'tsconfig-level-3.json': `{ + "angularCompilerOptions": { + "enableIvy": false + } + } + `, + }); + + const {options} = readConfiguration(path.resolve(basePath, 'tsconfig-level-1.json')); + expect(options.enableIvy).toBe(false); + }); });