From e7e61fe7a732933f9736020ecbae690c6e058716 Mon Sep 17 00:00:00 2001 From: Sacha Stafyniak Date: Tue, 21 Mar 2023 15:00:05 +0000 Subject: [PATCH] fix: try to only parse meta once during ssr build (#54) --- src/parser.ts | 2 +- src/unplugin.ts | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/parser.ts b/src/parser.ts index ff96fa5..2c6ffcf 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -198,7 +198,7 @@ export function useComponentMetaParser ( const startTime = performance.now() await Promise.all(Object.values(components).map(fetchComponent)) const endTime = performance.now() - if (!debug) { logger.success(`Components metas parsed in ${(endTime - startTime).toFixed(2)}ms`) } + if (!debug || debug === 2) { logger.success(`Components metas parsed in ${(endTime - startTime).toFixed(2)}ms`) } } return { diff --git a/src/unplugin.ts b/src/unplugin.ts index d64f25b..f608f33 100644 --- a/src/unplugin.ts +++ b/src/unplugin.ts @@ -7,15 +7,23 @@ type ComponentMetaUnpluginOptions = { parser?: ComponentMetaParser } & ModuleOpt export const metaPlugin = createUnplugin( ({ parser, ...options }) => { const instance = (parser || useComponentMetaParser(options)) as ComponentMetaParser + let _configResolved: any return { name: 'vite-plugin-nuxt-component-meta', enforce: 'post', async buildStart () { + // avoid parsing meta twice in SSR + if (_configResolved?.build.ssr) { + return + } await instance.fetchComponents() await instance.updateOutput() }, vite: { + configResolved (config) { + _configResolved = config + }, async handleHotUpdate ({ file }) { if (Object.entries(instance.components).some(([, comp]: any) => comp.fullPath === file)) { await instance.fetchComponent(file)