Skip to content

Commit 9264f7f

Browse files
author
Franck Freiburger
committed
feat(core): also handle lang="ts" for vue2
1 parent 27c2de2 commit 9264f7f

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

src/createVue2SFCModule.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import jsx from '@vue/babel-plugin-transform-vue-jsx'
1414
// @ts-ignore
1515
import babelSugarInjectH from '@vue/babel-sugar-inject-h'
1616

17+
// @ts-ignore (TS7016: Could not find a declaration file for module '@babel/plugin-transform-typescript'.)
18+
import babelPlugin_typescript from '@babel/plugin-transform-typescript'
19+
1720
import {
1821
formatError,
1922
formatErrorStartEnd,
@@ -134,9 +137,18 @@ export async function createSFCModule(source : string, filename : AbstractPath,
134137

135138
const src = descriptor.script.src ? (await (await getResource({ refPath: filename, relPath: descriptor.script.src }, options).getContent()).getContentData(false)) as string : descriptor.script.content;
136139

137-
const [ depsList, transformedScriptSource ] = await withCache(compiledCache, [ componentHash, src, additionalBabelParserPlugins, Object.keys(additionalBabelPlugins) ], async ({ preventCache }) => {
140+
const [ depsList, transformedScriptSource ] = await withCache(compiledCache, [ componentHash, src, descriptor.script.lang, additionalBabelParserPlugins, Object.keys(additionalBabelPlugins) ], async ({ preventCache }) => {
141+
142+
let contextBabelParserPlugins : Options['additionalBabelParserPlugins'] = ['jsx'];
143+
let contextBabelPlugins: Options['additionalBabelPlugins'] = { jsx, babelSugarInjectH };
144+
145+
if (descriptor.script?.lang === 'ts' ) {
146+
147+
contextBabelParserPlugins = [ ...contextBabelParserPlugins, 'typescript' ];
148+
contextBabelPlugins = { ...contextBabelPlugins, typescript: babelPlugin_typescript };
149+
}
138150

139-
return await transformJSCode(src, true, strFilename, [ ...additionalBabelParserPlugins, 'jsx' ], { ...additionalBabelPlugins, jsx, babelSugarInjectH }, log, devMode);
151+
return await transformJSCode(src, true, strFilename, [ ...contextBabelParserPlugins, ...additionalBabelParserPlugins ], { ...contextBabelPlugins, ...additionalBabelPlugins }, log, devMode);
140152
});
141153

142154
await loadDeps(filename, depsList, options);

0 commit comments

Comments
 (0)