Skip to content

Commit

Permalink
fix(compiler-sfc): allow <script> with lang='js' (#7398)
Browse files Browse the repository at this point in the history
  • Loading branch information
sxzz committed Mar 28, 2023
1 parent 4355d24 commit 9f5e20c
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
Expand Up @@ -1277,6 +1277,21 @@ return () => {}
}"
`;

exports[`SFC compile <script setup> > should compile JS syntax 1`] = `
"const a = 1
const b = 2

export default {
setup(__props, { expose }) {
expose();


return { a, b }
}

}"
`;

exports[`SFC compile <script setup> > should expose top level declarations 1`] = `
"import { x } from './x'

Expand Down
11 changes: 11 additions & 0 deletions packages/compiler-sfc/__tests__/compileScript.spec.ts
Expand Up @@ -2,6 +2,17 @@ import { BindingTypes } from '@vue/compiler-core'
import { compileSFCScript as compile, assertCode, mockId } from './utils'

describe('SFC compile <script setup>', () => {
test('should compile JS syntax', () => {
const { content } = compile(`
<script setup lang='js'>
const a = 1
const b = 2
</script>
`)
expect(content).toMatch(`return { a, b }`)
assertCode(content)
})

test('should expose top level declarations', () => {
const { content, bindings } = compile(`
<script setup>
Expand Down
9 changes: 7 additions & 2 deletions packages/compiler-sfc/src/compileScript.ts
Expand Up @@ -167,6 +167,11 @@ export function compileScript(
const cssVars = sfc.cssVars
const scriptLang = script && script.lang
const scriptSetupLang = scriptSetup && scriptSetup.lang
const isJS =
scriptLang === 'js' ||
scriptLang === 'jsx' ||
scriptSetupLang === 'js' ||
scriptSetupLang === 'jsx'
const isTS =
scriptLang === 'ts' ||
scriptLang === 'tsx' ||
Expand Down Expand Up @@ -196,7 +201,7 @@ export function compileScript(
if (!script) {
throw new Error(`[@vue/compiler-sfc] SFC contains no <script> tags.`)
}
if (scriptLang && !isTS && scriptLang !== 'jsx') {
if (scriptLang && !isJS && !isTS) {
// do not process non js/ts script blocks
return script
}
Expand Down Expand Up @@ -264,7 +269,7 @@ export function compileScript(
)
}

if (scriptSetupLang && !isTS && scriptSetupLang !== 'jsx') {
if (scriptSetupLang && !isJS && !isTS) {
// do not process non js/ts script blocks
return scriptSetup
}
Expand Down

0 comments on commit 9f5e20c

Please sign in to comment.