diff --git a/packages/vite/src/server.ts b/packages/vite/src/server.ts index 3d724907db..343d8205a5 100644 --- a/packages/vite/src/server.ts +++ b/packages/vite/src/server.ts @@ -2,7 +2,6 @@ import { resolve } from 'upath' import * as vite from 'vite' import vuePlugin from '@vitejs/plugin-vue' import { mkdirp, writeFile } from 'fs-extra' -import debounce from 'debounce' import consola from 'consola' import { ViteBuildContext, ViteOptions } from './vite' import { wpfs } from './utils/wpfs' @@ -62,15 +61,31 @@ export async function buildServer (ctx: ViteBuildContext) { return } - const build = debounce(async () => { - const start = Date.now() + let lastBuild = 0 + const build = async () => { + let start = Date.now() + // debounce + if (start - lastBuild < 300) { + await sleep(300 - (start - lastBuild) + 1) + start = Date.now() + if (start - lastBuild < 300) { + return + } + } + lastBuild = start await vite.build(serverConfig) await onBuild() consola.info(`Server built in ${Date.now() - start}ms`) - }, 300) + } await build() ctx.nuxt.hook('builder:watch', () => build()) ctx.nuxt.hook('app:templatesGenerated', () => build()) } + +function sleep (ms:number) { + return new Promise((resolve) => { + setTimeout(resolve, ms) + }) +}