fix(vite): improve warmup (#4106)

This commit is contained in:
Anthony Fu 2022-04-06 13:54:53 +08:00 committed by GitHub
parent 4ba0604522
commit ec32cf9fc5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,19 +1,25 @@
import { logger } from '@nuxt/kit'
import type { ViteDevServer } from 'vite'
export async function warmupViteServer (server: ViteDevServer, entries: string[]) {
export async function warmupViteServer (
server: ViteDevServer,
entries: string[]
) {
const warmedUrls = new Set<String>()
const warmup = async (url: string) => {
if (warmedUrls.has(url)) { return undefined }
if (warmedUrls.has(url)) {
return
}
warmedUrls.add(url)
try {
await server.transformRequest(url)
} catch (e) {
logger.debug('Warmup for %s failed with: %s', url, e)
}
const deps = Array.from(server.moduleGraph.urlToModuleMap.get(url)?.importedModules || [])
await Promise.all(deps.map(m => warmup(m.url)))
const mod = await server.moduleGraph.getModuleByUrl(url)
const deps = Array.from(mod?.importedModules || [])
await Promise.all(deps.map(m => warmup(m.url.replace('/@id/__x00__', '\0'))))
}
await Promise.all(entries.map(entry => warmup(entry)))