Skip to content

Commit

Permalink
fix(optimizer): always queue run at least once
Browse files Browse the repository at this point in the history
  • Loading branch information
sapphi-red committed Jun 24, 2022
1 parent cd59ee4 commit 8cfa974
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 4 deletions.
1 change: 1 addition & 0 deletions packages/vite/src/node/optimizer/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ export interface DepsOptimizer {
isOptimizedDepUrl: (url: string) => boolean
getOptimizedDepId: (depInfo: OptimizedDepInfo) => string

queueFirstOptimizerRun: () => void
delayDepsOptimizerUntil: (id: string, done: () => Promise<any>) => void
registerWorkersSource: (id: string) => void
resetRegisteredIds: () => void
Expand Down
15 changes: 12 additions & 3 deletions packages/vite/src/node/optimizer/optimizer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,9 @@ export function getDepsOptimizer(
return depsOptimizerMap.get(config.mainConfig || config)
}

const dummyId = Symbol('dummy id for first optimizer run')
type DummyId = typeof dummyId

export async function initDepsOptimizer(
config: ResolvedConfig,
server?: ViteDevServer
Expand Down Expand Up @@ -81,6 +84,7 @@ export async function initDepsOptimizer(
getOptimizedDepId: (depInfo: OptimizedDepInfo) =>
isBuild ? depInfo.file : `${depInfo.file}?v=${depInfo.browserHash}`,
registerWorkersSource,
queueFirstOptimizerRun,
delayDepsOptimizerUntil,
resetRegisteredIds,
options: config.optimizeDeps
Expand Down Expand Up @@ -517,10 +521,10 @@ export async function initDepsOptimizer(

const runOptimizerIfIdleAfterMs = 100

let registeredIds: { id: string; done: () => Promise<any> }[] = []
let registeredIds: { id: string | DummyId; done: () => Promise<any> }[] = []
let seenIds = new Set<string>()
let workersSources = new Set<string>()
let waitingOn: string | undefined
let waitingOn: string | DummyId | undefined

function resetRegisteredIds() {
registeredIds = []
Expand All @@ -529,6 +533,11 @@ export async function initDepsOptimizer(
waitingOn = undefined
}

function queueFirstOptimizerRun() {
registeredIds.push({ id: dummyId, done: async () => {} })
runOptimizerWhenIdle()
}

function registerWorkersSource(id: string): void {
workersSources.add(id)
// Avoid waiting for this id, as it may be blocked by the rollup
Expand Down Expand Up @@ -559,7 +568,7 @@ export async function initDepsOptimizer(
waitingOn = next.id
const afterLoad = () => {
waitingOn = undefined
if (!workersSources.has(next.id)) {
if (next.id === dummyId || !workersSources.has(next.id)) {
if (registeredIds.length > 0) {
runOptimizerWhenIdle()
} else {
Expand Down
3 changes: 2 additions & 1 deletion packages/vite/src/node/plugins/optimizedDeps.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,10 +86,11 @@ export function optimizedDepsBuildPlugin(config: ResolvedConfig): Plugin {
buildStart() {
if (!config.isWorker) {
getDepsOptimizer(config)?.resetRegisteredIds()
getDepsOptimizer(config)?.queueFirstOptimizerRun()
}
},

async resolveId(id) {
resolveId(id) {
if (getDepsOptimizer(config)?.isOptimizedDepFile(id)) {
return id
}
Expand Down

0 comments on commit 8cfa974

Please sign in to comment.