From c0c46caa00fff0cf5999b0c1b9386036049738e7 Mon Sep 17 00:00:00 2001 From: Aukevanoost Date: Thu, 14 May 2026 09:20:58 +0200 Subject: [PATCH] fix(@angular/build): Proper shutdown of esbuild workers --- .../angular/build/src/builders/application/build-action.ts | 5 ++++- packages/angular/build/src/tools/esbuild/bundler-context.ts | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/angular/build/src/builders/application/build-action.ts b/packages/angular/build/src/builders/application/build-action.ts index d483d32909c0..7ff7e4abb1d4 100644 --- a/packages/angular/build/src/builders/application/build-action.ts +++ b/packages/angular/build/src/builders/application/build-action.ts @@ -9,6 +9,7 @@ import { BuilderContext } from '@angular-devkit/architect'; import { existsSync } from 'node:fs'; import path from 'node:path'; +import { shutdownEsbuild } from '../../tools/esbuild/bundler-context'; import { ExecutionResult, RebuildState } from '../../tools/esbuild/bundler-execution-result'; import { BuildOutputFile, BuildOutputFileType } from '../../tools/esbuild/bundler-files'; import { shutdownSassWorkerPool } from '../../tools/esbuild/stylesheets/sass-language'; @@ -89,9 +90,10 @@ export async function* runEsBuildBuildAction( // Log all diagnostic (error/warning/logs) messages await logMessages(logger, result, colors, jsonLogs); } finally { - // Ensure Sass workers are shutdown if not watching + // Ensure workers are shutdown if not watching if (!watch) { shutdownSassWorkerPool(); + await shutdownEsbuild(); } } @@ -219,6 +221,7 @@ export async function* runEsBuildBuildAction( await Promise.allSettled([watcher.close(), result.dispose()]); shutdownSassWorkerPool(); + await shutdownEsbuild(); } } diff --git a/packages/angular/build/src/tools/esbuild/bundler-context.ts b/packages/angular/build/src/tools/esbuild/bundler-context.ts index 308e3509acdb..84c56369d607 100644 --- a/packages/angular/build/src/tools/esbuild/bundler-context.ts +++ b/packages/angular/build/src/tools/esbuild/bundler-context.ts @@ -16,6 +16,7 @@ import { OutputFile, build, context, + stop, } from 'esbuild'; import assert from 'node:assert'; import { builtinModules } from 'node:module'; @@ -57,6 +58,10 @@ function isEsBuildFailure(value: unknown): value is BuildFailure { return !!value && typeof value === 'object' && 'errors' in value && 'warnings' in value; } +export function shutdownEsbuild(): Promise { + return stop(); +} + export class BundlerContext { #esbuildContext?: BuildContext<{ metafile: true; write: false }>; #esbuildOptions?: BuildOptions & { metafile: true; write: false };