From 45765488d498d94f8760c9e82f1177070057b17c Mon Sep 17 00:00:00 2001 From: Evan You Date: Mon, 1 May 2023 11:30:58 +0800 Subject: [PATCH] feat(compiler-sfc): expose parseCache So that users can adjust cache's max size. close #8202 --- packages/compiler-sfc/src/cache.ts | 2 +- packages/compiler-sfc/src/index.ts | 2 +- packages/compiler-sfc/src/parse.ts | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) 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 }