diff --git a/packages/compiler-sfc/src/rewriteDefault.ts b/packages/compiler-sfc/src/rewriteDefault.ts index e61cf691bba..b19a95f6800 100644 --- a/packages/compiler-sfc/src/rewriteDefault.ts +++ b/packages/compiler-sfc/src/rewriteDefault.ts @@ -2,7 +2,8 @@ import { parse, ParserPlugin } from '@babel/parser' import MagicString from 'magic-string' const defaultExportRE = /((?:^|\n|;)\s*)export(\s*)default/ -const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)(?:as)?(\s*)default/s +const namedDefaultExportRE = /((?:^|\n|;)\s*)export(.+)as(\s*)default/s +const objectWithDefaultExportRE = /((?:^|\n|;)\s*)export(\s*){(.+)default/s const exportDefaultClassRE = /((?:^|\n|;)\s*)export\s+default\s+class\s+([\w$]+)/ @@ -89,7 +90,7 @@ export function rewriteDefault( } export function hasDefaultExport(input: string): boolean { - return defaultExportRE.test(input) || namedDefaultExportRE.test(input) + return defaultExportRE.test(input) || namedDefaultExportRE.test(input) || objectWithDefaultExportRE.test(input) } function specifierEnd( diff --git a/packages/compiler-sfc/test/rewriteDefault.spec.ts b/packages/compiler-sfc/test/rewriteDefault.spec.ts index 9fb4c64bbb3..9d80db7cc2f 100644 --- a/packages/compiler-sfc/test/rewriteDefault.spec.ts +++ b/packages/compiler-sfc/test/rewriteDefault.spec.ts @@ -242,4 +242,18 @@ describe('compiler sfc: rewriteDefault', () => { const script = Bar" `) }) + + test('@Component\nexport default class w/ preceeding export keyword & unrelated default keyword', () => { + expect( + rewriteDefault( + `export const test = ''\n@Component\nexport default class Foo { /* default */ }`, + 'script' + ) + ).toMatchInlineSnapshot(` + "export const test = '' + @Component + class Foo { /* default */ } + const script = Foo" + `) + }) })