From 52f4069f831ffb5b6e8edc027191af2a80e4bd36 Mon Sep 17 00:00:00 2001 From: inottn Date: Thu, 20 Feb 2025 13:26:02 +0800 Subject: [PATCH] perf(loader-runner): memoize resolver creation for improved performance --- packages/rspack/src/loader-runner/index.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/rspack/src/loader-runner/index.ts b/packages/rspack/src/loader-runner/index.ts index f76f7a813c55..fe1a6db9fa1d 100644 --- a/packages/rspack/src/loader-runner/index.ts +++ b/packages/rspack/src/loader-runner/index.ts @@ -630,12 +630,16 @@ export async function runLoaders( }; }; - const resolver = compiler._lastCompilation!.resolverFactory.get("normal"); + const getResolver = memoize(() => { + return compiler._lastCompilation!.resolverFactory.get("normal"); + }); + loaderContext.resolve = function resolve(context, request, callback) { - resolver.resolve({}, context, request, getResolveContext(), callback); + getResolver().resolve({}, context, request, getResolveContext(), callback); }; loaderContext.getResolve = function getResolve(options) { + const resolver = getResolver(); const child = options ? resolver.withOptions(options) : resolver; return (context, request, callback) => { if (callback) {