From 72701db1fc597e3edff090d474e6d849574a987f Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 19 Nov 2020 17:01:02 -0500 Subject: [PATCH] fix: fix pageData injection when script setup is present --- src/node/markdownToVue.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/node/markdownToVue.ts b/src/node/markdownToVue.ts index 34594d60..a14375f8 100644 --- a/src/node/markdownToVue.ts +++ b/src/node/markdownToVue.ts @@ -63,6 +63,7 @@ export function createMarkdownToVueRenderFn( } const scriptRE = /<\/script>/ +const scriptSetupRE = /<\s*script[^>]*\bsetup\b[^>]*/ const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/ const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)as(\s*)default/ @@ -70,7 +71,9 @@ function injectPageData(tags: string[], data: PageData) { const code = `\nexport const __pageData = ${JSON.stringify( JSON.stringify(data) )}` - const existingScriptIndex = tags.findIndex((tag) => scriptRE.test(tag)) + const existingScriptIndex = tags.findIndex( + (tag) => scriptRE.test(tag) && !scriptSetupRE.test(tag) + ) if (existingScriptIndex > -1) { const tagSrc = tags[existingScriptIndex] // user has ` ) } else { - tags.push(``) + tags.unshift(``) } return tags