2022-02-16 21:34:32 +00:00
|
|
|
import { logger } from '@nuxt/kit'
|
2021-04-29 11:51:54 +00:00
|
|
|
import type { ViteDevServer } from 'vite'
|
|
|
|
|
|
|
|
export async function warmupViteServer (server: ViteDevServer, entries: string[]) {
|
|
|
|
const warmedUrls = new Set<String>()
|
|
|
|
|
|
|
|
const warmup = async (url: string) => {
|
|
|
|
if (warmedUrls.has(url)) { return undefined }
|
|
|
|
warmedUrls.add(url)
|
2021-11-08 10:34:39 +00:00
|
|
|
try {
|
|
|
|
await server.transformRequest(url)
|
|
|
|
} catch (e) {
|
2022-02-16 21:34:32 +00:00
|
|
|
logger.debug('Warmup for %s failed with: %s', url, e)
|
2021-11-08 10:34:39 +00:00
|
|
|
}
|
2021-07-15 10:18:34 +00:00
|
|
|
const deps = Array.from(server.moduleGraph.urlToModuleMap.get(url)?.importedModules || [])
|
2021-04-29 11:51:54 +00:00
|
|
|
await Promise.all(deps.map(m => warmup(m.url)))
|
|
|
|
}
|
|
|
|
|
|
|
|
await Promise.all(entries.map(entry => warmup(entry)))
|
|
|
|
}
|