Nuxt/packages/vite/src/utils/warmup.ts

28 lines
843 B
TypeScript
Raw Normal View History

import { logger } from '@nuxt/kit'
import type { ViteDevServer } from 'vite'
2022-04-06 05:54:53 +00:00
export async function warmupViteServer (
server: ViteDevServer,
entries: string[],
isServer: boolean
2022-04-06 05:54:53 +00:00
) {
const warmedUrls = new Set<String>()
const warmup = async (url: string) => {
2022-04-06 05:54:53 +00:00
if (warmedUrls.has(url)) {
return
}
warmedUrls.add(url)
try {
await server.transformRequest(url, { ssr: isServer })
} catch (e) {
logger.debug('Warmup for %s failed with: %s', url, e)
}
const mod = await server.moduleGraph.getModuleByUrl(url, isServer)
2022-09-09 09:54:20 +00:00
const deps = mod?.ssrTransformResult?.deps /* server */ || Array.from(mod?.importedModules /* client */ || []).map(m => m.url)
await Promise.all(deps.map(m => warmup(m.replace('/@id/__x00__', '\0'))))
}
await Promise.all(entries.map(entry => warmup(entry)))
}