Skip to content

Commit 48325f9

Browse files
committed
fix: transform jsx for entire file
closes #301, closes #300
1 parent d484513 commit 48325f9

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

src/jsx.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { transform } from '@babel/standalone'
22
import jsx from '@vue/babel-plugin-jsx'
33

4-
export async function transformJSX(src: string) {
4+
export function transformJSX(src: string) {
55
return transform(src, {
66
plugins: [jsx],
77
}).code!

src/transform.ts

+11-10
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ function testJsx(filename: string | undefined | null) {
1717
return !!(filename && /(\.|\b)[jt]sx$/.test(filename))
1818
}
1919

20-
async function transformTS(src: string, isJSX?: boolean) {
20+
function transformTS(src: string, isJSX?: boolean) {
2121
return transform(src, {
2222
transforms: ['typescript', ...(isJSX ? (['jsx'] as Transform[]) : [])],
2323
jsxRuntime: 'preserve',
@@ -40,10 +40,12 @@ export async function compileFile(
4040
if (REGEX_JS.test(filename)) {
4141
const isJSX = testJsx(filename)
4242
if (testTs(filename)) {
43-
code = await transformTS(code, isJSX)
43+
code = transformTS(code, isJSX)
4444
}
4545
if (isJSX) {
46-
code = await import('./jsx').then((m) => m.transformJSX(code))
46+
code = await import('./jsx').then(({ transformJSX }) =>
47+
transformJSX(code),
48+
)
4749
}
4850
compiled.js = compiled.ssr = code
4951
return []
@@ -191,6 +193,12 @@ export async function compileFile(
191193
}
192194
}
193195

196+
if (isJSX) {
197+
const { transformJSX } = await import('./jsx')
198+
clientCode &&= transformJSX(clientCode)
199+
ssrCode &&= transformJSX(ssrCode)
200+
}
201+
194202
if (hasScoped) {
195203
appendSharedCode(
196204
`\n${COMP_IDENTIFIER}.__scopeId = ${JSON.stringify(`data-v-${id}`)}`,
@@ -297,9 +305,6 @@ async function doCompileScript(
297305
if (isTS) {
298306
code = await transformTS(code, isJSX)
299307
}
300-
if (isJSX) {
301-
code = await import('./jsx').then((m) => m.transformJSX(code))
302-
}
303308
if (compiledScript.bindings) {
304309
code =
305310
`/* Analyzed bindings: ${JSON.stringify(
@@ -364,9 +369,5 @@ async function doCompileTemplate(
364369
if (isTS) {
365370
code = await transformTS(code, isJSX)
366371
}
367-
if (isJSX) {
368-
code = await import('./jsx').then((m) => m.transformJSX(code))
369-
}
370-
371372
return code
372373
}

0 commit comments

Comments
 (0)