From c454b5611ac9df46292a1b9f49a2fe52f67b4e6c Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Tue, 27 Sep 2022 09:28:58 +0800 Subject: [PATCH] fix(vite): initial load --- packages/vite/src/modes/global/dev.ts | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) 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)