From 230c686422b8abe54f16bb09ac5b5ef2c2b42461 Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Wed, 3 Feb 2021 15:34:56 +0100 Subject: [PATCH] fix(@ngtools/webpack): don't use `skipTemplateCodegen` to determine if compilation is JIT mode With this change we add a new `jitMode` option to the ivy AngularWebpackPlugin. `readConfiguration` from `@angular/compiler-cli` will use file configuration options over programmaticly supplied options. By using a separate option the options precedence issue can be avoided. Closes #19949 (cherry picked from commit d2ce3e7d6234f4367b08e8ed5b1a6328974a940b) --- .../build_angular/src/webpack/configs/typescript.ts | 2 +- packages/ngtools/webpack/src/ivy/plugin.ts | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/angular_devkit/build_angular/src/webpack/configs/typescript.ts b/packages/angular_devkit/build_angular/src/webpack/configs/typescript.ts index aa3c0317b2f5..1f5757ec1806 100644 --- a/packages/angular_devkit/build_angular/src/webpack/configs/typescript.ts +++ b/packages/angular_devkit/build_angular/src/webpack/configs/typescript.ts @@ -59,7 +59,6 @@ function createIvyPlugin( const optimize = buildOptions.optimization.scripts; const compilerOptions: CompilerOptions = { - skipTemplateCodegen: !aot, sourceMap: buildOptions.sourceMap.scripts, }; @@ -78,6 +77,7 @@ function createIvyPlugin( tsconfig, compilerOptions, fileReplacements, + jitMode: !aot, emitNgModuleScope: !optimize, }); } diff --git a/packages/ngtools/webpack/src/ivy/plugin.ts b/packages/ngtools/webpack/src/ivy/plugin.ts index 3130b69a6466..8b2f528d644a 100644 --- a/packages/ngtools/webpack/src/ivy/plugin.ts +++ b/packages/ngtools/webpack/src/ivy/plugin.ts @@ -44,6 +44,7 @@ export interface AngularPluginOptions { emitClassMetadata: boolean; emitNgModuleScope: boolean; suppressZoneJsIncompatibilityWarning: boolean; + jitMode: boolean; } // Add support for missing properties in Webpack types as well as the loader's file emitter @@ -91,6 +92,7 @@ export class AngularWebpackPlugin { this.pluginOptions = { emitClassMetadata: false, emitNgModuleScope: false, + jitMode: false, fileReplacements: {}, substitutions: {}, directTemplateLoading: true, @@ -222,7 +224,7 @@ export class AngularWebpackPlugin { augmentHostWithSubstitutions(host, this.pluginOptions.substitutions); // Create the file emitter used by the webpack loader - const { fileEmitter, builder, internalFiles } = compilerOptions.skipTemplateCodegen + const { fileEmitter, builder, internalFiles } = this.pluginOptions.jitMode ? this.updateJitProgram(compilerOptions, rootNames, host, diagnosticsReporter) : this.updateAotProgram( compilerOptions,