diff --git a/packages/astro/src/index.ts b/packages/astro/src/index.ts index c2d2370d24..84a5143e4a 100644 --- a/packages/astro/src/index.ts +++ b/packages/astro/src/index.ts @@ -4,7 +4,7 @@ import type { AstroIntegration } from 'astro' import type { VitePluginConfig } from '@unocss/vite' import VitePlugin from '@unocss/vite' import type { UserConfigDefaults } from '@unocss/core' -import type { Plugin } from 'vite' +import type { Plugin, ResolvedConfig } from 'vite' const UNO_INJECT_ID = 'uno-astro' const UNO_QUERY_KEY = 'uno-with-astro-key' @@ -15,15 +15,25 @@ interface AstroVitePluginOptions { function AstroVitePlugin(options: AstroVitePluginOptions): Plugin { const { injects } = options + + let config: ResolvedConfig + return { name: 'unocss:astro', - apply: 'serve', enforce: 'pre', - resolveId(id, importer) { + configResolved(_config) { + config = _config + }, + async resolveId(id, importer) { if (id === UNO_INJECT_ID) return id - if (importer?.endsWith(UNO_INJECT_ID)) - return `${id}${id.includes('?') ? '&' : '?'}${UNO_QUERY_KEY}` + if (importer?.endsWith(UNO_INJECT_ID) && config && config.command === 'serve') { + const resolved = await this.resolve(id, importer, { skipSelf: true }) + if (resolved) { + const fsPath = resolved.id + return `${fsPath}${fsPath.includes('?') ? '&' : '?'}${UNO_QUERY_KEY}` + } + } }, load(id, options) { if (id.endsWith(UNO_INJECT_ID))