Skip to content

Commit 2900a9a

Browse files
committedFeb 26, 2021
fix(plugin-vue): handle default rewrite edge case for commented class
close #2277
1 parent 167a9c3 commit 2900a9a

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed
 

‎packages/plugin-vue/src/main.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ async function genTemplateCode(
219219
}
220220
}
221221

222-
const exportDefaultClassRE = /export\s+default\s+class\s+([\w$]+)/
222+
const exportDefaultClassRE = /(?:(?:^|\n|;)\s*)export\s+default\s+class\s+([\w$]+)/
223223

224224
async function genScriptCode(
225225
descriptor: SFCDescriptor,
@@ -240,11 +240,16 @@ async function genScriptCode(
240240
(!script.lang || (script.lang === 'ts' && options.devServer)) &&
241241
!script.src
242242
) {
243+
// TODO remove the class check logic after upgrading @vue/compiler-sfc
243244
const classMatch = script.content.match(exportDefaultClassRE)
244245
if (classMatch) {
245246
scriptCode =
246247
script.content.replace(exportDefaultClassRE, `class $1`) +
247248
`\nconst _sfc_main = ${classMatch[1]}`
249+
if (/export\s+default/.test(scriptCode)) {
250+
// fallback if there are still export default
251+
scriptCode = rewriteDefault(script.content, `_sfc_main`)
252+
}
248253
} else {
249254
scriptCode = rewriteDefault(script.content, `_sfc_main`)
250255
}

0 commit comments

Comments
 (0)
Please sign in to comment.