From 1d95ebf961507d676ba506d23ee436aa2f3a352f Mon Sep 17 00:00:00 2001 From: cexbrayat Date: Thu, 22 Jan 2026 17:26:08 +0100 Subject: [PATCH] fix(@angular/build): support TypeScript isolatedDeclarations option MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This change allows the use of TypeScript's isolatedDeclarations compiler option by conditionally preserving the declaration and composite options when isolatedDeclarations is enabled. Previously, the Angular CLI forcefully set both declaration and composite to false, which prevented the use of isolatedDeclarations as TypeScript requires at least one of these options to be true when isolatedDeclarations is set (TS5069 error): ``` ✘ [ERROR] TS5069: Option 'isolatedDeclarations' cannot be specified without specifying option 'declaration' or option 'composite'. [plugin angular-compiler] ``` --- .../src/tools/angular/compilation/angular-compilation.ts | 1 - .../build/src/tools/esbuild/angular/compiler-plugin.ts | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts index 00a17ccc453e..1e2a59c5b22a 100644 --- a/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts +++ b/packages/angular/build/src/tools/angular/compilation/angular-compilation.ts @@ -52,7 +52,6 @@ export abstract class AngularCompilation { suppressOutputPathCheck: true, outDir: undefined, sourceMap: false, - declaration: false, declarationMap: false, allowEmptyCodegenFiles: false, annotationsAs: 'decorators', diff --git a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts index af4dcaea01fb..1a5a63577ada 100644 --- a/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts +++ b/packages/angular/build/src/tools/esbuild/angular/compiler-plugin.ts @@ -733,7 +733,9 @@ function createCompilerOptionsTransformer( return { ...compilerOptions, noEmitOnError: false, - composite: false, + // TypeScript requires either declaration or composite to be true when isolatedDeclarations is set + declaration: compilerOptions.isolatedDeclarations ? compilerOptions.declaration : false, + composite: compilerOptions.isolatedDeclarations ? compilerOptions.composite : false, inlineSources: !!pluginOptions.sourcemap, inlineSourceMap: !!pluginOptions.sourcemap, sourceMap: undefined,