diff --git a/packages/vite/src/modes/global/dev.ts b/packages/vite/src/modes/global/dev.ts index d97177b6ff..fc7aff1232 100644 --- a/packages/vite/src/modes/global/dev.ts +++ b/packages/vite/src/modes/global/dev.ts @@ -1,5 +1,5 @@ import type { Plugin, Update, ViteDevServer, ResolvedConfig as ViteResolvedConfig } from 'vite' -import type { UnocssPluginContext } from '@unocss/core' +import type { GenerateResult, UnocssPluginContext } from '@unocss/core' import { notNull } from '@unocss/core' import { LAYER_MARK_ALL, getHash, getPath, resolveId, resolveLayer } from '../../integration' @@ -37,9 +37,9 @@ export function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate server!.moduleGraph.invalidateModule(mod) } } - lastServedHash.clear() clearTimeout(invalidateTimer) invalidateTimer = setTimeout(() => { + lastServedHash.clear() sendUpdate(ids) }, timer) } @@ -96,15 +96,8 @@ export function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate servers.push(_server) _server.ws.on(WS_EVENT_PREFIX, ([layer, hash]: string[]) => { - if (lastServedHash.get(layer) !== hash) { + if (lastServedHash.get(layer) !== hash) sendUpdate(entries) - } - else { - setTimeout(() => { - if (lastServedHash.get(layer) !== hash) - sendUpdate(entries) - }, 50) - } }) }, buildStart() { @@ -137,7 +130,15 @@ export function GlobalModeDevPlugin({ uno, tokens, affectedModules, onInvalidate return null await Promise.all(tasks) - const result = await uno.generate(tokens) + let result: GenerateResult + let tokensSize = tokens.size + do { + result = await uno.generate(tokens) + // to capture new tokens created during generation + if (tokensSize === tokens.size) + break + tokensSize = tokens.size + } while (true) const css = layer === LAYER_MARK_ALL ? result.getLayers(undefined, Array.from(entries)