From c90b46e9f52a32b4d1d0577815a5a3cffda97827 Mon Sep 17 00:00:00 2001 From: patak Date: Mon, 3 Apr 2023 17:25:59 +0200 Subject: [PATCH] perf: start preprocessing static imports before updating module graph (#12723) --- .../vite/src/node/plugins/importAnalysis.ts | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/vite/src/node/plugins/importAnalysis.ts b/packages/vite/src/node/plugins/importAnalysis.ts index acd85a1402aa2a..289930320182fe 100644 --- a/packages/vite/src/node/plugins/importAnalysis.ts +++ b/packages/vite/src/node/plugins/importAnalysis.ts @@ -275,7 +275,6 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { let s: MagicString | undefined const str = () => s || (s = new MagicString(source)) const importedUrls = new Set() - const staticImportedUrls = new Set() const acceptedUrls = new Set<{ url: string start: number @@ -615,9 +614,23 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { ) } - if (!isDynamicImport && isLocalImport) { - // for pre-transforming - staticImportedUrls.add(hmrUrl) + if ( + !isDynamicImport && + isLocalImport && + config.server.preTransformRequests + ) { + // pre-transform known direct imports + // These requests will also be registered in transformRequest to be awaited + // by the deps optimizer + const url = removeImportQuery(hmrUrl) + server.transformRequest(url, { ssr }).catch((e) => { + if (e?.code === ERR_OUTDATED_OPTIMIZED_DEP) { + // This are expected errors + return + } + // Unexpected error, log the issue but avoid an unhandled exception + config.logger.error(e.message) + }) } } else if (!importer.startsWith(clientDir)) { if (!isInNodeModules(importer)) { @@ -760,23 +773,6 @@ export function importAnalysisPlugin(config: ResolvedConfig): Plugin { )}`, ) - // pre-transform known direct imports - // These requests will also be registered in transformRequest to be awaited - // by the deps optimizer - if (config.server.preTransformRequests && staticImportedUrls.size) { - for (let url of staticImportedUrls) { - url = removeImportQuery(url) - server.transformRequest(url, { ssr }).catch((e) => { - if (e?.code === ERR_OUTDATED_OPTIMIZED_DEP) { - // This are expected errors - return - } - // Unexpected error, log the issue but avoid an unhandled exception - config.logger.error(e.message) - }) - } - } - if (s) { return transformStableResult(s, importer, config) } else {