From 1fea7288c35eeb36a7bf217bfaaad308ee6e5f2f Mon Sep 17 00:00:00 2001 From: neverland Date: Wed, 1 Oct 2025 22:07:18 +0800 Subject: [PATCH 1/2] perf(hmr): no need to get assets info --- packages/core/src/server/socketServer.ts | 34 +++++++++++++----------- 1 file changed, 19 insertions(+), 15 deletions(-) diff --git a/packages/core/src/server/socketServer.ts b/packages/core/src/server/socketServer.ts index 5ee641b3f5..3f79cac3a2 100644 --- a/packages/core/src/server/socketServer.ts +++ b/packages/core/src/server/socketServer.ts @@ -88,6 +88,8 @@ export class SocketServer { private reportedBrowserLogs: Set = new Set(); + private currentHash: Map = new Map(); + constructor( context: InternalContext, options: DevConfig, @@ -332,7 +334,7 @@ export class SocketServer { return null; } - const defaultStats: Record = { + const defaultStats: Rspack.StatsOptions = { all: false, hash: true, assets: true, @@ -383,7 +385,7 @@ export class SocketServer { const newInitialChunks: Set = new Set(); if (statsJson.entrypoints) { for (const entrypoint of Object.values(statsJson.entrypoints)) { - const chunks = entrypoint.chunks; + const { chunks } = entrypoint; if (!Array.isArray(chunks)) { continue; @@ -411,19 +413,22 @@ export class SocketServer { return; } - const shouldEmit = - !force && - statsJson && - !statsJson.errorsCount && - statsJson.assets && - statsJson.assets.every((asset: any) => !asset.emitted); - - if (shouldEmit) { - this.sockWrite({ type: 'ok' }, token); - return; - } - if (statsJson.hash) { + const prevHash = this.currentHash.get(token); + this.currentHash.set(token, statsJson.hash); + + // If build hash is not changed and there is no error or warning, skip emit + const shouldEmit = + !force && + !statsJson.errorsCount && + !statsJson.warningsCount && + prevHash === statsJson.hash; + + if (shouldEmit) { + this.sockWrite({ type: 'ok' }, token); + return; + } + this.sockWrite( { type: 'hash', @@ -469,7 +474,6 @@ export class SocketServer { } this.sockWrite({ type: 'ok' }, token); - return; } // send message to connecting socket From f711885e6a3ee6028130d20cb6ed845c6f8d4590 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 2 Oct 2025 07:59:19 +0800 Subject: [PATCH 2/2] Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- packages/core/src/server/socketServer.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/core/src/server/socketServer.ts b/packages/core/src/server/socketServer.ts index 3f79cac3a2..415413ab64 100644 --- a/packages/core/src/server/socketServer.ts +++ b/packages/core/src/server/socketServer.ts @@ -337,7 +337,6 @@ export class SocketServer { const defaultStats: Rspack.StatsOptions = { all: false, hash: true, - assets: true, warnings: true, warningsCount: true, errors: true,