Skip to content

Commit

Permalink
fix: deps optimizer idle logic for workers (fix #8479) (#8511)
Browse files Browse the repository at this point in the history
  • Loading branch information
patak-dev committed Jun 10, 2022
1 parent 9065b37 commit 1e05548
Show file tree
Hide file tree
Showing 6 changed files with 35 additions and 5 deletions.
14 changes: 10 additions & 4 deletions packages/vite/src/node/optimizer/optimizer.ts
Expand Up @@ -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()
}
}

Expand All @@ -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
Expand Down
1 change: 1 addition & 0 deletions playground/worker/dep-to-optimize/index.js
@@ -0,0 +1 @@
export const msg = 'dep-to-optimize'
7 changes: 7 additions & 0 deletions playground/worker/dep-to-optimize/package.json
@@ -0,0 +1,7 @@
{
"name": "dep-to-optimize",
"private": true,
"version": "1.0.0",
"type": "module",
"main": "index.js"
}
3 changes: 2 additions & 1 deletion playground/worker/my-worker.ts
@@ -1,9 +1,10 @@
import { mode, msg } from './modules/workerImport'
import { bundleWithPlugin } from './modules/test-plugin'
import { msg as msgFromDep } from 'dep-to-optimize'

self.onmessage = (e) => {
if (e.data === 'ping') {
self.postMessage({ msg, mode, bundleWithPlugin })
self.postMessage({ msg, mode, bundleWithPlugin, msgFromDep })
}
}

Expand Down
3 changes: 3 additions & 0 deletions playground/worker/package.json
Expand Up @@ -23,6 +23,9 @@
"preview:relative-base": "cross-env WORKER_MODE=inline vite --config ./vite.config-relative-base.js preview",
"debug": "node --inspect-brk ../../packages/vite/bin/vite"
},
"dependencies": {
"dep-to-optimize": "file:./dep-to-optimize"
},
"devDependencies": {
"@vitejs/plugin-vue-jsx": "workspace:*"
}
Expand Down
12 changes: 12 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1e05548

Please sign in to comment.