From 01fa2abe901834c1c3168c343120429700e82983 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 18 Sep 2021 12:19:23 -0400 Subject: [PATCH] feat(plugin-vue): support TS in template expressions --- packages/plugin-vue/src/template.ts | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/plugin-vue/src/template.ts b/packages/plugin-vue/src/template.ts index 6e76333519884b..0fa50b36e5366c 100644 --- a/packages/plugin-vue/src/template.ts +++ b/packages/plugin-vue/src/template.ts @@ -4,7 +4,8 @@ import { compileTemplate, SFCDescriptor, SFCTemplateCompileOptions, - SFCTemplateCompileResults + SFCTemplateCompileResults, + CompilerOptions } from '@vue/compiler-sfc' import { PluginContext, TransformPluginContext } from 'rollup' import { ResolvedOptions } from '.' @@ -157,6 +158,16 @@ export function resolveTemplateCompilerOptions( } } + // if using TS, support TS syntax in template expressions + const expressionPlugins: CompilerOptions['expressionPlugins'] = + options.template?.compilerOptions?.expressionPlugins || [] + if ( + descriptor.script?.lang === 'ts' || + descriptor.scriptSetup?.lang === 'ts' + ) { + expressionPlugins.push('typescript') + } + return { ...options.template, id, @@ -173,7 +184,8 @@ export function resolveTemplateCompilerOptions( compilerOptions: { ...options.template?.compilerOptions, scopeId: hasScoped ? `data-v-${id}` : undefined, - bindingMetadata: resolvedScript ? resolvedScript.bindings : undefined + bindingMetadata: resolvedScript ? resolvedScript.bindings : undefined, + expressionPlugins } } }