From edbd262a0eac158fcc69ff2329e4507e5743fa65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=20/=20green?= Date: Mon, 27 Mar 2023 02:33:44 +0900 Subject: [PATCH] perf: cache `depsCacheDirPrefix` value for `isOptimizedDepFile` (#12601) --- packages/vite/src/node/optimizer/index.ts | 10 +++++----- packages/vite/src/node/optimizer/optimizer.ts | 6 +++--- packages/vite/src/node/plugins/importAnalysis.ts | 8 ++------ 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/packages/vite/src/node/optimizer/index.ts b/packages/vite/src/node/optimizer/index.ts index 7782667699b3b3..b7612f57696014 100644 --- a/packages/vite/src/node/optimizer/index.ts +++ b/packages/vite/src/node/optimizer/index.ts @@ -930,15 +930,15 @@ export function getDepsCacheDir(config: ResolvedConfig, ssr: boolean): string { return getDepsCacheDirPrefix(config) + getDepsCacheSuffix(config, ssr) } -export function getDepsCacheDirPrefix(config: ResolvedConfig): string { +function getDepsCacheDirPrefix(config: ResolvedConfig): string { return normalizePath(path.resolve(config.cacheDir, 'deps')) } -export function isOptimizedDepFile( - id: string, +export function createIsOptimizedDepFile( config: ResolvedConfig, -): boolean { - return id.startsWith(getDepsCacheDirPrefix(config)) +): (id: string) => boolean { + const depsCacheDirPrefix = getDepsCacheDirPrefix(config) + return (id) => id.startsWith(depsCacheDirPrefix) } export function createIsOptimizedDepUrl( diff --git a/packages/vite/src/node/optimizer/optimizer.ts b/packages/vite/src/node/optimizer/optimizer.ts index 5c159f3b6d9d8a..d083de8521bf12 100644 --- a/packages/vite/src/node/optimizer/optimizer.ts +++ b/packages/vite/src/node/optimizer/optimizer.ts @@ -6,6 +6,7 @@ import type { ResolvedConfig, ViteDevServer } from '..' import { addManuallyIncludedOptimizeDeps, addOptimizedDepInfo, + createIsOptimizedDepFile, createIsOptimizedDepUrl, debuggerViteDeps as debug, depsFromOptimizedDepInfo, @@ -14,7 +15,6 @@ import { extractExportsData, getOptimizedDepPath, initDepsOptimizerMetadata, - isOptimizedDepFile, loadCachedDepOptimizationMetadata, newDepOptimizationProcessing, optimizeServerSsrDeps, @@ -112,7 +112,7 @@ async function createDepsOptimizer( metadata, registerMissingImport, run: () => debouncedProcessing(0), - isOptimizedDepFile: (id: string) => isOptimizedDepFile(id, config), + isOptimizedDepFile: createIsOptimizedDepFile(config), isOptimizedDepUrl: createIsOptimizedDepUrl(config), getOptimizedDepId: (depInfo: OptimizedDepInfo) => isBuild ? depInfo.file : `${depInfo.file}?v=${depInfo.browserHash}`, @@ -754,7 +754,7 @@ async function createDevSsrDepsOptimizer( const depsOptimizer = { metadata, - isOptimizedDepFile: (id: string) => isOptimizedDepFile(id, config), + isOptimizedDepFile: createIsOptimizedDepFile(config), isOptimizedDepUrl: createIsOptimizedDepUrl(config), getOptimizedDepId: (depInfo: OptimizedDepInfo) => `${depInfo.file}?v=${depInfo.browserHash}`, diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index 1a59b862cac727..c1a7b6403502cb 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -54,11 +54,7 @@ import { shouldExternalizeForSSR, } from '../ssr/ssrExternal' import { transformRequest } from '../server/transformRequest' -import { - getDepsCacheDirPrefix, - getDepsOptimizer, - optimizedDepNeedsInterop, -} from '../optimizer' +import { getDepsOptimizer, optimizedDepNeedsInterop } from '../optimizer' import { checkPublicFile } from './asset' import { ERR_OUTDATED_OPTIMIZED_DEP, @@ -348,7 +344,7 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { // in root: infer short absolute path from root url = resolved.id.slice(root.length) } else if ( - resolved.id.startsWith(getDepsCacheDirPrefix(config)) || + depsOptimizer?.isOptimizedDepFile(resolved.id) || fs.existsSync(cleanUrl(resolved.id)) ) { // an optimized deps may not yet exists in the filesystem, or