@@ -131,12 +131,21 @@ export async function createSFCModule(source : string, filename : AbstractPath,
131
131
132
132
const [ depsList , transformedScriptSource ] = await withCache ( compiledCache , [ componentHash , descriptor . script ?. content , descriptor . scriptSetup ?. content , additionalBabelParserPlugins , Object . keys ( additionalBabelPlugins ) ] , async ( { preventCache } ) => {
133
133
134
+ let contextBabelParserPlugins : Options [ 'additionalBabelParserPlugins' ] = [ 'jsx' ] ;
135
+ let contextBabelPlugins : Options [ 'additionalBabelPlugins' ] = { jsx : babelPlugin_jsx } ;
136
+
137
+ if ( descriptor . script ?. lang === 'ts' || descriptor . scriptSetup ?. lang === 'ts' ) {
138
+
139
+ contextBabelParserPlugins = [ ...contextBabelParserPlugins , 'typescript' ] ;
140
+ contextBabelPlugins = { ...contextBabelPlugins , typescript : babelPlugin_typescript } ;
141
+ }
142
+
134
143
// src: https://github.com/vuejs/vue-next/blob/15baaf14f025f6b1d46174c9713a2ec517741d0d/packages/compiler-sfc/src/compileScript.ts#L43
135
144
const scriptBlock = sfc_compileScript ( descriptor , {
136
145
isProd,
137
146
id : scopeId ,
138
147
// @ts -ignore (unstable resolution: node_modules/@babel/parser/typings/babel-parser vs node_modules/@types/babel__core/node_modules/@babel/parser/typings/babel-parser)
139
- babelParserPlugins : additionalBabelParserPlugins , // [...babelParserDefaultPlugins, 'jsx'] + additionalBabelParserPlugins // babelParserDefaultPlugins = [ 'bigInt', 'optionalChaining', 'nullishCoalescingOperator' ]
148
+ babelParserPlugins : [ ... contextBabelParserPlugins , ... additionalBabelParserPlugins ] , // [...babelParserDefaultPlugins, 'jsx'] + additionalBabelParserPlugins // babelParserDefaultPlugins = [ 'bigInt', 'optionalChaining', 'nullishCoalescingOperator' ]
140
149
// doc: https://github.com/vuejs/rfcs/blob/script-setup-2/active-rfcs/0000-script-setup.md#inline-template-mode
141
150
// vue-loader next : https://github.com/vuejs/vue-loader/blob/12aaf2ea77add8654c50c8751bad135f1881e53f/src/resolveScript.ts#L59
142
151
inlineTemplate : false ,
@@ -147,16 +156,10 @@ export async function createSFCModule(source : string, filename : AbstractPath,
147
156
if ( compileTemplateOptions !== null )
148
157
compileTemplateOptions . compilerOptions . bindingMetadata = scriptBlock . bindings ;
149
158
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
159
-
160
+ // note:
161
+ // scriptBlock.content is the script code after vue transformations
162
+ // scriptBlock.scriptAst is the script AST before vue transformations
160
163
return await transformJSCode ( scriptBlock . content , true , strFilename , [ ...contextBabelParserPlugins , ...additionalBabelParserPlugins ] , { ...contextBabelPlugins , ...additionalBabelPlugins } , log , devMode ) ;
161
164
162
165
} ) ;
0 commit comments