Skip to content

Commit d2a2e05

Browse files
committedDec 30, 2023
fix: pass compilerOptions to sfc parse & re-enable AST reuse
1 parent 071f30d commit d2a2e05

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed
 

‎src/descriptorCache.ts

+6-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as fs from 'fs'
2-
import type { SFCDescriptor } from 'vue/compiler-sfc'
2+
import type { CompilerOptions, SFCDescriptor } from 'vue/compiler-sfc'
33
import { compiler } from './compiler'
44

55
const { parse } = compiler
@@ -9,7 +9,10 @@ export function setDescriptor(filename: string, entry: SFCDescriptor) {
99
descriptorCache.set(cleanQuery(filename), entry)
1010
}
1111

12-
export function getDescriptor(filename: string): SFCDescriptor {
12+
export function getDescriptor(
13+
filename: string,
14+
compilerOptions?: CompilerOptions
15+
): SFCDescriptor {
1316
filename = cleanQuery(filename)
1417
if (descriptorCache.has(filename)) {
1518
return descriptorCache.get(filename)!
@@ -24,6 +27,7 @@ export function getDescriptor(filename: string): SFCDescriptor {
2427
const { descriptor } = parse(source, {
2528
filename,
2629
sourceMap: true,
30+
templateParseOptions: compilerOptions,
2731
})
2832
descriptorCache.set(filename, descriptor)
2933
return descriptor

‎src/index.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export default function loader(
116116
const { descriptor, errors } = parse(source, {
117117
filename,
118118
sourceMap,
119+
templateParseOptions: options.compilerOptions,
119120
})
120121

121122
const asCustomElement =
@@ -363,7 +364,9 @@ export default function loader(
363364
if (!propsToAttach.length) {
364365
code += `\n\nconst __exports__ = script;`
365366
} else {
366-
code += `\n\nimport exportComponent from ${stringifyRequest(exportHelperPath)}`
367+
code += `\n\nimport exportComponent from ${stringifyRequest(
368+
exportHelperPath
369+
)}`
367370
code += `\nconst __exports__ = /*#__PURE__*/exportComponent(script, [${propsToAttach
368371
.map(([key, val]) => `['${key}',${val}]`)
369372
.join(',')}])`

‎src/templateLoader.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,10 @@ const TemplateLoader: LoaderDefinitionFunction = function (source, inMap: any) {
2727
loaderContext.mode === 'production' || process.env.NODE_ENV === 'production'
2828
const query = qs.parse(loaderContext.resourceQuery.slice(1))
2929
const scopeId = query.id as string
30-
const descriptor = getDescriptor(loaderContext.resourcePath)
30+
const descriptor = getDescriptor(
31+
loaderContext.resourcePath,
32+
options.compilerOptions
33+
)
3134
const script = resolveScript(
3235
descriptor,
3336
query.id as string,
@@ -44,10 +47,10 @@ const TemplateLoader: LoaderDefinitionFunction = function (source, inMap: any) {
4447

4548
const compiled = compileTemplate({
4649
source,
47-
// ast:
48-
// descriptor.template && !descriptor.template.lang
49-
// ? descriptor.template.ast
50-
// : undefined,
50+
ast:
51+
descriptor.template && !descriptor.template.lang
52+
? descriptor.template.ast
53+
: undefined,
5154
filename: loaderContext.resourcePath,
5255
inMap,
5356
id: scopeId,

0 commit comments

Comments
 (0)