diff --git a/packages/compiler-sfc/src/cache.ts b/packages/compiler-sfc/src/cache.ts index eb6bad0f86d..36d240810c7 100644 --- a/packages/compiler-sfc/src/cache.ts +++ b/packages/compiler-sfc/src/cache.ts @@ -1,6 +1,6 @@ import LRU from 'lru-cache' -export function createCache(size = 500) { +export function createCache(size = 500): Map & { max?: number } { if (__GLOBAL__ || __ESM_BROWSER__) { return new Map() } diff --git a/packages/compiler-sfc/src/index.ts b/packages/compiler-sfc/src/index.ts index 78a89c7b498..3821c255d52 100644 --- a/packages/compiler-sfc/src/index.ts +++ b/packages/compiler-sfc/src/index.ts @@ -1,7 +1,7 @@ export const version = __VERSION__ // API -export { parse } from './parse' +export { parse, parseCache } from './parse' export { compileTemplate } from './compileTemplate' export { compileStyle, compileStyleAsync } from './compileStyle' export { compileScript } from './compileScript' diff --git a/packages/compiler-sfc/src/parse.ts b/packages/compiler-sfc/src/parse.ts index 29c91cc1977..da8cf6d8669 100644 --- a/packages/compiler-sfc/src/parse.ts +++ b/packages/compiler-sfc/src/parse.ts @@ -93,7 +93,7 @@ export interface SFCParseResult { errors: (CompilerError | SyntaxError)[] } -const sourceToSFC = createCache() +export const parseCache = createCache() export function parse( source: string, @@ -108,7 +108,7 @@ export function parse( ): SFCParseResult { const sourceKey = source + sourceMap + filename + sourceRoot + pad + compiler.parse - const cache = sourceToSFC.get(sourceKey) + const cache = parseCache.get(sourceKey) if (cache) { return cache } @@ -284,7 +284,7 @@ export function parse( descriptor, errors } - sourceToSFC.set(sourceKey, result) + parseCache.set(sourceKey, result) return result }