Skip to content

Commit a8560f9

Browse files
committed
refactor: improve resolver caching logic
1 parent a9ae386 commit a8560f9

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

src/resolve.ts

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121

2222
const root = cwd();
2323

24-
let resolverCache: ResolverFactory | null = null;
24+
let relativeResolver: ResolverFactory | null = null;
2525

2626
/**
2727
* Resolves relative path imports
@@ -36,13 +36,13 @@ function resolveRelativePath(
3636
modulePath: string,
3737
options: NapiResolveOptions,
3838
): ResolvedResult {
39-
if (!resolverCache) {
40-
resolverCache = new ResolverFactory(options);
39+
if (!relativeResolver) {
40+
relativeResolver = new ResolverFactory(options);
4141
}
4242

4343
const sourceFileDir = path.dirname(sourceFile);
4444

45-
const result = resolverCache.sync(sourceFileDir, modulePath);
45+
const result = relativeResolver.sync(sourceFileDir, modulePath);
4646

4747
if (result.path) {
4848
return { found: true, path: result.path };
@@ -52,6 +52,7 @@ function resolveRelativePath(
5252
}
5353

5454
const pathToPackagesMap = new Map<string, string[]>();
55+
let resolver: ResolverFactory | null = null;
5556

5657
export default function resolve(
5758
modulePath: string,
@@ -137,12 +138,25 @@ export default function resolve(
137138
}
138139
}
139140

140-
const resolver = new ResolverFactory({
141-
alias: resolveAlias,
142-
tsconfig: configFileOptions,
143-
roots: resolveRoots,
144-
...restOptions,
145-
});
141+
if (!resolver) {
142+
resolver = new ResolverFactory({
143+
alias: resolveAlias,
144+
tsconfig: configFileOptions,
145+
roots: resolveRoots,
146+
...restOptions,
147+
});
148+
} else {
149+
const oldResolver = resolver;
150+
151+
resolver = oldResolver.cloneWithOptions({
152+
alias: resolveAlias,
153+
tsconfig: configFileOptions,
154+
roots: resolveRoots,
155+
...restOptions,
156+
});
157+
158+
oldResolver.clearCache();
159+
}
146160

147161
const result = resolver.sync(path.dirname(sourceFile), modulePath);
148162
if (result.path) {

0 commit comments

Comments
 (0)