fix: fix pageData injection when script setup is present

pull/137/head
Evan You 5 years ago
parent 000bcaffd4
commit 72701db1fc

@ -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 <script> tag inside markdown
@ -82,7 +85,7 @@ function injectPageData(tags: string[], data: PageData) {
code + (hasDefaultExport ? `` : `\nexport default{}\n`) + `</script>`
)
} else {
tags.push(`<script>${code}\nexport default {}</script>`)
tags.unshift(`<script>${code}\nexport default {}</script>`)
}
return tags

Loading…
Cancel
Save