diff --git a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap index 77e8ed01f59..52bda6f48b6 100644 --- a/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap +++ b/packages/compiler-sfc/__tests__/__snapshots__/compileScript.spec.ts.snap @@ -4,8 +4,10 @@ exports[`SFC compile - - `) - assertCode(content) - }) - - test('with minimal spaces', () => { - const { content } = compile(` - - - `) - assertCode(content) - }) - }) - test('script first', () => { const { content } = compile(` + `) + assertCode(content) + }) + + test('script setup first, named default export', () => { + const { content } = compile(` + + `) assertCode(content) @@ -249,6 +230,43 @@ defineExpose({ foo: 123 }) expect(content).toMatch(/const __default__[\S\s]*\.\.\.__default__/m) assertCode(content) }) + + describe('spaces in ExportDefaultDeclaration node', () => { + // #4371 + test('with many spaces and newline', () => { + // #4371 + const { content } = compile(` + + + `) + assertCode(content) + }) + + test('with minimal spaces', () => { + const { content } = compile(` + + + `) + assertCode(content) + }) + }) }) describe('imports', () => { diff --git a/packages/compiler-sfc/src/compileScript.ts b/packages/compiler-sfc/src/compileScript.ts index 9aa108118fd..75203d42b53 100644 --- a/packages/compiler-sfc/src/compileScript.ts +++ b/packages/compiler-sfc/src/compileScript.ts @@ -59,6 +59,9 @@ const DEFINE_EMITS = 'defineEmits' const DEFINE_EXPOSE = 'defineExpose' const WITH_DEFAULTS = 'withDefaults' +// constants +const DEFAULT_VAR = `__default__` + const isBuiltInDir = makeMap( `once,memo,if,else,else-if,slot,text,html,on,bind,model,show,cloak,is` ) @@ -214,14 +217,14 @@ export function compileScript( } } if (cssVars.length) { - content = rewriteDefault(content, `__default__`, plugins) + content = rewriteDefault(content, DEFAULT_VAR, plugins) content += genNormalScriptCssVarsCode( cssVars, bindings, scopeId, isProd ) - content += `\nexport default __default__` + content += `\nexport default ${DEFAULT_VAR}` } return { ...script, @@ -251,7 +254,6 @@ export function compileScript( // metadata that needs to be returned const bindingMetadata: BindingMetadata = {} - const defaultTempVar = `__default__` const helperImports: Set = new Set() const userImports: Record = Object.create(null) const userImportAlias: Record = Object.create(null) @@ -780,7 +782,6 @@ export function compileScript( // 1. process normal