Skip to content

Commit 1e05548

Browse files
authoredJun 10, 2022
fix: deps optimizer idle logic for workers (fix #8479) (#8511)
1 parent 9065b37 commit 1e05548

File tree

6 files changed

+35
-5
lines changed

6 files changed

+35
-5
lines changed
 

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

+10-4
Original file line numberDiff line numberDiff line change
@@ -521,8 +521,12 @@ export async function initDepsOptimizer(
521521

522522
function registerWorkersSource(id: string): void {
523523
workersSources.add(id)
524+
// Avoid waiting for this id, as it may be blocked by the rollup
525+
// bundling process of the worker that also depends on the optimizer
526+
registeredIds = registeredIds.filter((registered) => registered.id !== id)
524527
if (waitingOn === id) {
525528
waitingOn = undefined
529+
runOptimizerWhenIdle()
526530
}
527531
}
528532

@@ -545,10 +549,12 @@ export async function initDepsOptimizer(
545549
waitingOn = next.id
546550
const afterLoad = () => {
547551
waitingOn = undefined
548-
if (registeredIds.length > 0) {
549-
runOptimizerWhenIdle()
550-
} else if (!workersSources.has(next.id)) {
551-
getDepsOptimizer(config)?.run()
552+
if (!workersSources.has(next.id)) {
553+
if (registeredIds.length > 0) {
554+
runOptimizerWhenIdle()
555+
} else {
556+
getDepsOptimizer(config)?.run()
557+
}
552558
}
553559
}
554560
next
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export const msg = 'dep-to-optimize'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "dep-to-optimize",
3+
"private": true,
4+
"version": "1.0.0",
5+
"type": "module",
6+
"main": "index.js"
7+
}

‎playground/worker/my-worker.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { mode, msg } from './modules/workerImport'
22
import { bundleWithPlugin } from './modules/test-plugin'
3+
import { msg as msgFromDep } from 'dep-to-optimize'
34

45
self.onmessage = (e) => {
56
if (e.data === 'ping') {
6-
self.postMessage({ msg, mode, bundleWithPlugin })
7+
self.postMessage({ msg, mode, bundleWithPlugin, msgFromDep })
78
}
89
}
910

‎playground/worker/package.json

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@
2323
"preview:relative-base": "cross-env WORKER_MODE=inline vite --config ./vite.config-relative-base.js preview",
2424
"debug": "node --inspect-brk ../../packages/vite/bin/vite"
2525
},
26+
"dependencies": {
27+
"dep-to-optimize": "file:./dep-to-optimize"
28+
},
2629
"devDependencies": {
2730
"@vitejs/plugin-vue-jsx": "workspace:*"
2831
}

‎pnpm-lock.yaml

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
Please sign in to comment.