@@ -14,6 +14,7 @@ import { transformTemplateInMain } from './template'
14
14
import { isOnlyTemplateChanged , isEqualBlock } from './handleHotUpdate'
15
15
import { RawSourceMap , SourceMapConsumer , SourceMapGenerator } from 'source-map'
16
16
import { createRollupError } from './utils/error'
17
+ import { transformWithEsbuild } from 'vite'
17
18
18
19
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
19
20
export async function transformMain (
@@ -191,8 +192,24 @@ export async function transformMain(
191
192
192
193
output . push ( `export default _sfc_main` )
193
194
195
+ // handle TS transpilation
196
+ let resolvedCode = output . join ( '\n' )
197
+ if (
198
+ descriptor . script ?. lang === 'ts' ||
199
+ descriptor . scriptSetup ?. lang === 'ts'
200
+ ) {
201
+ const { code, map } = await transformWithEsbuild (
202
+ resolvedCode ,
203
+ filename ,
204
+ { loader : 'ts' } ,
205
+ resolvedMap
206
+ )
207
+ resolvedCode = code
208
+ resolvedMap = resolvedMap ? ( map as any ) : resolvedMap
209
+ }
210
+
194
211
return {
195
- code : output . join ( '\n' ) ,
212
+ code : resolvedCode ,
196
213
map : resolvedMap || {
197
214
mappings : ''
198
215
}
@@ -255,19 +272,8 @@ async function genScriptCode(
255
272
( ! script . lang || ( script . lang === 'ts' && options . devServer ) ) &&
256
273
! script . src
257
274
) {
258
- scriptCode = script . content
275
+ scriptCode = rewriteDefault ( script . content , '_sfc_main' )
259
276
map = script . map
260
- if ( script . lang === 'ts' ) {
261
- const result = await options . devServer ! . transformWithEsbuild (
262
- scriptCode ,
263
- descriptor . filename ,
264
- { loader : 'ts' } ,
265
- map
266
- )
267
- scriptCode = result . code
268
- map = result . map
269
- }
270
- scriptCode = rewriteDefault ( scriptCode , `_sfc_main` )
271
277
} else {
272
278
if ( script . src ) {
273
279
await linkSrcToDescriptor ( script . src , descriptor , pluginContext )
0 commit comments