From 449a54baa2dfc2614d58cecd44ed145a24c12461 Mon Sep 17 00:00:00 2001 From: patak-dev Date: Thu, 9 Jun 2022 00:34:32 +0200 Subject: [PATCH] fix: deps optimizer idle logic for workers (fix #8479) --- packages/vite/src/node/optimizer/optimizer.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/vite/src/node/optimizer/optimizer.ts b/packages/vite/src/node/optimizer/optimizer.ts index a7c5391de79b5f..a75eb9090aa109 100644 --- a/packages/vite/src/node/optimizer/optimizer.ts +++ b/packages/vite/src/node/optimizer/optimizer.ts @@ -521,8 +521,12 @@ export async function initDepsOptimizer( function registerWorkersSource(id: string): void { workersSources.add(id) + // Avoid waiting for this id, as it may be blocked by the rollup + // bundling process of the worker that also depends on the optimizer + registeredIds = registeredIds.filter((registered) => registered.id !== id) if (waitingOn === id) { waitingOn = undefined + runOptimizerWhenIdle() } } @@ -545,10 +549,12 @@ export async function initDepsOptimizer( waitingOn = next.id const afterLoad = () => { waitingOn = undefined - if (registeredIds.length > 0) { - runOptimizerWhenIdle() - } else if (!workersSources.has(next.id)) { - getDepsOptimizer(config)?.run() + if (!workersSources.has(next.id)) { + if (registeredIds.length > 0) { + runOptimizerWhenIdle() + } else { + getDepsOptimizer(config)?.run() + } } } next