Skip to content

Commit

Permalink
fix: keep nextImports order
Browse files Browse the repository at this point in the history
  • Loading branch information
sun0day committed Mar 29, 2023
1 parent fec8a91 commit 10d9026
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions packages/vite/src/node/server/moduleGraph.ts
Expand Up @@ -148,28 +148,33 @@ export class ModuleGraph {
): Promise<Set<ModuleNode> | undefined> {
mod.isSelfAccepting = isSelfAccepting
const prevImports = mod.importedModules
const nextImports = (mod.importedModules = new Set())
let noLongerImported: Set<ModuleNode> | undefined

let resolvePromises = []
let resolveResults = new Array(importedModules.size)
let index = 0
// update import graph
for (const imported of importedModules) {
const nextIndex = index++
if (typeof imported === 'string') {
resolvePromises.push(
this.ensureEntryFromUrl(imported, ssr).then((dep) => {
dep.importers.add(mod)
nextImports.add(dep)
resolveResults[nextIndex] = dep
}),
)
} else {
imported.importers.add(mod)
nextImports.add(imported)
resolveResults[nextIndex] = imported
}
}

if (resolvePromises.length) {
await Promise.all(resolvePromises)
}

const nextImports = (mod.importedModules = new Set(resolveResults))

// remove the importer from deps that were imported but no longer are.
prevImports.forEach((dep) => {
if (!nextImports.has(dep)) {
Expand All @@ -182,22 +187,28 @@ export class ModuleGraph {
})

// update accepted hmr deps
const deps = (mod.acceptedHmrDeps = new Set())
resolvePromises = []
resolveResults = new Array(acceptedModules.size)
index = 0
for (const accepted of acceptedModules) {
const nextIndex = index++
if (typeof accepted === 'string') {
resolvePromises.push(
this.ensureEntryFromUrl(accepted, ssr).then((dep) => deps.add(dep)),
this.ensureEntryFromUrl(accepted, ssr).then((dep) => {
resolveResults[nextIndex] = dep
}),
)
} else {
deps.add(accepted)
resolveResults[nextIndex] = accepted
}
}

if (resolvePromises.length) {
await Promise.all(resolvePromises)
}

mod.acceptedHmrDeps = new Set(resolveResults)

// update accepted hmr exports
mod.acceptedHmrExports = acceptedExports
mod.importedBindings = importedBindings
Expand Down

0 comments on commit 10d9026

Please sign in to comment.