Skip to content

Commit d3397e6

Browse files
committed
fix(plugin-vue): special handling for class default export in sfc
close #1476
1 parent dbe1f4a commit d3397e6

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

packages/plugin-vue/src/main.ts

+10-1
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ async function genTemplateCode(
207207
}
208208
}
209209

210+
const exportDefaultClassRE = /export\s+default\s+class\s+([\w$]+)/
211+
210212
async function genScriptCode(
211213
descriptor: SFCDescriptor,
212214
options: ResolvedOptions,
@@ -226,7 +228,14 @@ async function genScriptCode(
226228
(!script.lang || (script.lang === 'ts' && options.devServer)) &&
227229
!script.src
228230
) {
229-
scriptCode = rewriteDefault(script.content, `_sfc_main`)
231+
const classMatch = script.content.match(exportDefaultClassRE)
232+
if (classMatch) {
233+
scriptCode =
234+
script.content.replace(exportDefaultClassRE, `class $1`) +
235+
`\nconst _sfc_main = ${classMatch[1]}`
236+
} else {
237+
scriptCode = rewriteDefault(script.content, `_sfc_main`)
238+
}
230239
map = script.map
231240
if (script.lang === 'ts') {
232241
const result = await options.devServer!.transformWithEsbuild(

0 commit comments

Comments
 (0)