diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts index d7bb28518f92..5eac59ba54a1 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/compiler-plugin.ts @@ -192,6 +192,10 @@ export function createCompilerPlugin( // Skip keys that have been manually provided continue; } + if (key === 'ngDevMode') { + // ngDevMode is already set based on the builder's script optimization option + continue; + } // esbuild requires values to be a string (actual strings need to be quoted). // In this case, all provided values are booleans. build.initialOptions.define[key] = value.toString(); diff --git a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts index 2508c1279cff..6d15beaf1d78 100644 --- a/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts +++ b/packages/angular_devkit/build_angular/src/builders/browser-esbuild/index.ts @@ -296,7 +296,11 @@ function createCodeBundleOptions( ), ], define: { + // Only set to false when script optimizations are enabled. It should not be set to true because + // Angular turns `ngDevMode` into an object for development debugging purposes when not defined + // which a constant true value would break. ...(optimizationOptions.scripts ? { 'ngDevMode': 'false' } : undefined), + // Only AOT mode is supported currently 'ngJitMode': 'false', }, };