From 82f047d104806cc62848ade0492af24df6a78061 Mon Sep 17 00:00:00 2001 From: Evan You Date: Sat, 30 Dec 2023 21:59:05 +0800 Subject: [PATCH] fix: pass compilerOptions to sfc parse --- src/descriptorCache.ts | 8 ++++++-- src/index.ts | 5 ++++- src/templateLoader.ts | 5 ++++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/descriptorCache.ts b/src/descriptorCache.ts index cb1914de..1d87e409 100644 --- a/src/descriptorCache.ts +++ b/src/descriptorCache.ts @@ -1,5 +1,5 @@ import * as fs from 'fs' -import type { SFCDescriptor } from 'vue/compiler-sfc' +import type { CompilerOptions, SFCDescriptor } from 'vue/compiler-sfc' import { compiler } from './compiler' const { parse } = compiler @@ -9,7 +9,10 @@ export function setDescriptor(filename: string, entry: SFCDescriptor) { descriptorCache.set(cleanQuery(filename), entry) } -export function getDescriptor(filename: string): SFCDescriptor { +export function getDescriptor( + filename: string, + compilerOptions?: CompilerOptions +): SFCDescriptor { filename = cleanQuery(filename) if (descriptorCache.has(filename)) { return descriptorCache.get(filename)! @@ -24,6 +27,7 @@ export function getDescriptor(filename: string): SFCDescriptor { const { descriptor } = parse(source, { filename, sourceMap: true, + templateParseOptions: compilerOptions, }) descriptorCache.set(filename, descriptor) return descriptor diff --git a/src/index.ts b/src/index.ts index 21be9e5c..380e1246 100644 --- a/src/index.ts +++ b/src/index.ts @@ -116,6 +116,7 @@ export default function loader( const { descriptor, errors } = parse(source, { filename, sourceMap, + templateParseOptions: options.compilerOptions, }) const asCustomElement = @@ -363,7 +364,9 @@ export default function loader( if (!propsToAttach.length) { code += `\n\nconst __exports__ = script;` } else { - code += `\n\nimport exportComponent from ${stringifyRequest(exportHelperPath)}` + code += `\n\nimport exportComponent from ${stringifyRequest( + exportHelperPath + )}` code += `\nconst __exports__ = /*#__PURE__*/exportComponent(script, [${propsToAttach .map(([key, val]) => `['${key}',${val}]`) .join(',')}])` diff --git a/src/templateLoader.ts b/src/templateLoader.ts index 06b7d81c..4c0cf824 100644 --- a/src/templateLoader.ts +++ b/src/templateLoader.ts @@ -27,7 +27,10 @@ const TemplateLoader: LoaderDefinitionFunction = function (source, inMap: any) { loaderContext.mode === 'production' || process.env.NODE_ENV === 'production' const query = qs.parse(loaderContext.resourceQuery.slice(1)) const scopeId = query.id as string - const descriptor = getDescriptor(loaderContext.resourcePath) + const descriptor = getDescriptor( + loaderContext.resourcePath, + options.compilerOptions + ) const script = resolveScript( descriptor, query.id as string,