From d4d4e8125ac786fdf6677bf0e59a2fe434e722fe Mon Sep 17 00:00:00 2001 From: Alan Agius <17563226+alan-agius4@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:28:22 +0000 Subject: [PATCH] fix(@angular/build): emit a warning when `outputHashing` is set to `all` or `bundles` when HMR is enabled These values are incompatible with HMR. Closes #30697 --- .../build/src/builders/dev-server/vite-server.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/angular/build/src/builders/dev-server/vite-server.ts b/packages/angular/build/src/builders/dev-server/vite-server.ts index 7dbafe80f8f4..6f68a37691c6 100644 --- a/packages/angular/build/src/builders/dev-server/vite-server.ts +++ b/packages/angular/build/src/builders/dev-server/vite-server.ts @@ -28,6 +28,7 @@ import { loadProxyConfiguration, normalizeSourceMaps } from '../../utils'; import { useComponentStyleHmr, useComponentTemplateHmr } from '../../utils/environment-options'; import { loadEsmModule } from '../../utils/load-esm'; import { Result, ResultFile, ResultKind } from '../application/results'; +import { OutputHashing } from '../application/schema'; import { type ApplicationBuilderInternalOptions, BuildOutputFileType, @@ -158,6 +159,19 @@ export async function* serveWithVite( process.setSourceMapsEnabled(true); } + if ( + serverOptions.hmr && + (browserOptions.outputHashing === OutputHashing.All || + browserOptions.outputHashing === OutputHashing.Bundles) + ) { + serverOptions.hmr = false; + + context.logger.warn( + `Hot Module Replacement (HMR) is disabled because the 'outputHashing' option is set to '${browserOptions.outputHashing}'. ` + + 'HMR is incompatible with this setting.', + ); + } + const componentsHmrCanBeUsed = browserOptions.aot && serverOptions.liveReload && serverOptions.hmr;