diff --git a/packages/plugin-vue/src/main.ts b/packages/plugin-vue/src/main.ts index d3c1226d..b19162b2 100644 --- a/packages/plugin-vue/src/main.ts +++ b/packages/plugin-vue/src/main.ts @@ -256,22 +256,42 @@ export async function transformMain( /tsx?$/.test(lang) && !descriptor.script?.src // only normal script can have src ) { - const { code, map } = await transformWithEsbuild( - resolvedCode, - filename, - { - target: 'esnext', - charset: 'utf8', - // #430 support decorators in .vue file - // target can be overridden by esbuild config target - ...options.devServer?.config.esbuild, - loader: 'ts', - sourcemap: options.sourceMap, - }, - resolvedMap, - ) - resolvedCode = code - resolvedMap = resolvedMap ? (map as any) : resolvedMap + // @ts-ignore Rolldown-specific + const { transformWithOxc } = await import('vite') + if (transformWithOxc) { + const { code, map } = await transformWithOxc( + resolvedCode, + filename, + { + // #430 support decorators in .vue file + // target can be overridden by oxc config target + // @ts-ignore Rolldown-specific + ...options.devServer?.config.oxc, + lang: 'ts', + sourcemap: options.sourceMap, + }, + resolvedMap, + ) + resolvedCode = code + resolvedMap = resolvedMap ? (map as any) : resolvedMap + } else { + const { code, map } = await transformWithEsbuild( + resolvedCode, + filename, + { + target: 'esnext', + charset: 'utf8', + // #430 support decorators in .vue file + // target can be overridden by esbuild config target + ...options.devServer?.config.esbuild, + loader: 'ts', + sourcemap: options.sourceMap, + }, + resolvedMap, + ) + resolvedCode = code + resolvedMap = resolvedMap ? (map as any) : resolvedMap + } } return {