Skip to content

Commit 9722616

Browse files
author
Franck Freiburger
committed
feat(core): add typescript syntax support in SFS script and script setup
closes #156 closes #151 closes #131
1 parent 34f614d commit 9722616

File tree

4 files changed

+174
-178
lines changed

4 files changed

+174
-178
lines changed

build/webpack.config.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -320,6 +320,8 @@ ${ pkg.name } v${ pkg.version } for vue${ vueTarget }
320320
'@vue/compiler-sfc$': require.resolve('@vue/compiler-sfc'),
321321
'@vue/compiler-dom$': require.resolve('@vue/compiler-dom'),
322322

323+
'@babel/plugin-transform-typescript$': require.resolve('@babel/plugin-transform-typescript'),
324+
323325
// not needed
324326
'consolidate': false,
325327
'@vue/compiler-ssr': false,

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
"@babel/plugin-transform-arrow-functions": "^7.16.7",
5858
"@babel/plugin-transform-modules-commonjs": "^7.16.8",
5959
"@babel/plugin-transform-runtime": "^7.16.10",
60+
"@babel/plugin-transform-typescript": "^7.23.6",
6061
"@babel/preset-env": "^7.16.11",
6162
"@types/babel__code-frame": "^7.0.2",
6263
"@types/babel__core": "^7.1.18",

src/createVue3SFCModule.ts

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import {
1111
import * as vue_CompilerDOM from '@vue/compiler-dom'
1212

1313
// https://github.com/vuejs/jsx-next
14-
import jsx from '@vue/babel-plugin-jsx'
14+
import babelPlugin_jsx from '@vue/babel-plugin-jsx'
15+
import babelPlugin_typescript from '@babel/plugin-transform-typescript'
1516

1617
import {
1718
formatErrorLineColumn,
@@ -146,7 +147,17 @@ export async function createSFCModule(source : string, filename : AbstractPath,
146147
if ( compileTemplateOptions !== null )
147148
compileTemplateOptions.compilerOptions.bindingMetadata = scriptBlock.bindings;
148149

149-
return await transformJSCode(scriptBlock.content, true, strFilename, [ ...additionalBabelParserPlugins, 'jsx' ], { ...additionalBabelPlugins, jsx }, log, devMode);
150+
let contextBabelParserPlugins : Options['additionalBabelParserPlugins'] = ['jsx'];
151+
let contextBabelPlugins: Options['additionalBabelPlugins'] = { jsx: babelPlugin_jsx };
152+
153+
if (descriptor.script?.lang === 'ts' || descriptor.scriptSetup?.lang === 'ts') {
154+
155+
contextBabelParserPlugins = [ ...contextBabelParserPlugins, 'typescript' ];
156+
contextBabelPlugins = { ...contextBabelPlugins, typescript: babelPlugin_typescript };
157+
}
158+
159+
160+
return await transformJSCode(scriptBlock.content, true, strFilename, [ ...contextBabelParserPlugins, ...additionalBabelParserPlugins ], { ...contextBabelPlugins, ...additionalBabelPlugins }, log, devMode);
150161

151162
});
152163

0 commit comments

Comments
 (0)