Skip to content

Commit b10da2f

Browse files
committed
fix: compat with latest vite + handle no export default script tags in md
1 parent a185822 commit b10da2f

File tree

3 files changed

+12
-5
lines changed

3 files changed

+12
-5
lines changed

Diff for: src/node/build/build.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { renderPage } from './render'
66
import { OutputChunk, OutputAsset } from 'rollup'
77

88
export type BuildOptions = Pick<
9-
ViteBuildOptions,
9+
Partial<ViteBuildOptions>,
1010
| 'root'
1111
| 'rollupInputOptions'
1212
| 'rollupOutputOptions'

Diff for: src/node/build/bundle.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ export async function bundle(
118118

119119
// resolve options to pass to vite
120120
const { rollupInputOptions = {}, rollupOutputOptions = {} } = options
121-
const viteOptions: ViteBuildOptions = {
121+
const viteOptions: Partial<ViteBuildOptions> = {
122122
...options,
123123
base: config.site.base,
124124
resolvers: [resolver],
@@ -153,5 +153,5 @@ export async function bundle(
153153
outDir: config.tempDir
154154
})
155155

156-
return [clientResult, serverResult, pageToHashMap]
156+
return [clientResult[0], serverResult[0], pageToHashMap]
157157
}

Diff for: src/node/markdownToVue.ts

+9-2
Original file line numberDiff line numberDiff line change
@@ -63,16 +63,23 @@ export function createMarkdownToVueRenderFn(
6363
}
6464

6565
const scriptRE = /<\/script>/
66+
const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/
67+
const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)as(\s*)default/
6668

6769
function injectPageData(tags: string[], data: PageData) {
6870
const code = `\nexport const __pageData = ${JSON.stringify(
6971
JSON.stringify(data)
7072
)}`
7173
const existingScriptIndex = tags.findIndex((tag) => scriptRE.test(tag))
7274
if (existingScriptIndex > -1) {
73-
tags[existingScriptIndex] = tags[existingScriptIndex].replace(
75+
const tagSrc = tags[existingScriptIndex]
76+
// user has <script> tag inside markdown
77+
// if it doesn't have export default it will error out on build
78+
const hasDefaultExport =
79+
defaultExportRE.test(tagSrc) || namedDefaultExportRE.test(tagSrc)
80+
tags[existingScriptIndex] = tagSrc.replace(
7481
scriptRE,
75-
code + `</script>`
82+
code + (hasDefaultExport ? `` : `\nexport default{}\n`) + `</script>`
7683
)
7784
} else {
7885
tags.push(`<script>${code}\nexport default {}</script>`)

0 commit comments

Comments
 (0)