Skip to content

Commit 98eefa8

Browse files
authored
fix: main browserHash after stable optimization rerun (#7284)
1 parent fc5c937 commit 98eefa8

File tree

1 file changed

+12
-5
lines changed
  • packages/vite/src/node/optimizer

1 file changed

+12
-5
lines changed

packages/vite/src/node/optimizer/index.ts

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,8 @@ export async function createOptimizeDepsRun(
250250
JSON.stringify({ type: 'module' })
251251
)
252252

253+
let newBrowserHash: string
254+
253255
let deps: Record<string, string>
254256
if (!newDeps) {
255257
// Initial optimizeDeps at server start. Perform a fast scan using esbuild to
@@ -281,7 +283,10 @@ export async function createOptimizeDepsRun(
281283
}
282284

283285
// update browser hash
284-
metadata.browserHash = getOptimizedBrowserHash(metadata.hash, deps)
286+
newBrowserHash = metadata.browserHash = getOptimizedBrowserHash(
287+
metadata.hash,
288+
deps
289+
)
285290

286291
// We generate the mapping of dependency ids to their cache file location
287292
// before processing the dependencies with esbuild. This allow us to continue
@@ -291,7 +296,7 @@ export async function createOptimizeDepsRun(
291296
metadata.optimized[id] = {
292297
file: getOptimizedDepPath(id, config),
293298
src: entry,
294-
browserHash: metadata.browserHash,
299+
browserHash: newBrowserHash,
295300
processing: processing.promise
296301
}
297302
}
@@ -302,9 +307,10 @@ export async function createOptimizeDepsRun(
302307

303308
metadata.optimized = newDeps
304309

305-
// update global browser hash, but keep newDeps individual hashs until we know
310+
// For reruns keep current global browser hash and newDeps individual hashes until we know
306311
// if files are stable so we can avoid a full page reload
307-
metadata.browserHash = getOptimizedBrowserHash(metadata.hash, deps)
312+
metadata.browserHash = currentData!.browserHash
313+
newBrowserHash = getOptimizedBrowserHash(metadata.hash, deps)
308314
}
309315

310316
return { metadata, run: prebundleDeps }
@@ -499,8 +505,9 @@ export async function createOptimizeDepsRun(
499505
// New deps that ended up with a different hash replaced while doing analysis import are going to
500506
// return a not found so the browser doesn't cache them. And will properly get loaded after the reload
501507
for (const id in deps) {
502-
metadata.optimized[id].browserHash = metadata.browserHash
508+
metadata.optimized[id].browserHash = newBrowserHash
503509
}
510+
metadata.browserHash = newBrowserHash
504511
}
505512

506513
// Write metadata file, delete `deps` folder and rename the new `processing` folder to `deps` in sync

0 commit comments

Comments
 (0)