mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Merge pull request #26296 from ajafff/modulenameresolver-cache
fix moduleNameResolver cache
This commit is contained in:
commit
c8e10a9a66
@ -401,7 +401,8 @@ namespace ts {
|
||||
}
|
||||
directoryPathMap.set(path, result);
|
||||
|
||||
const resolvedFileName = result.resolvedModule && result.resolvedModule.resolvedFileName;
|
||||
const resolvedFileName = result.resolvedModule &&
|
||||
(result.resolvedModule.originalPath || result.resolvedModule.resolvedFileName);
|
||||
// find common prefix between directory and resolved file name
|
||||
// this common prefix should be the shortest path that has the same resolution
|
||||
// directory: /a/b/c/d/e
|
||||
|
||||
@ -403,6 +403,30 @@ namespace ts {
|
||||
checkResolvedModule(resolution.resolvedModule, createResolvedModule(resolvedFileName, /*isExternalLibraryImport*/ true));
|
||||
});
|
||||
}
|
||||
|
||||
it("uses originalPath for caching", () => {
|
||||
const host = createModuleResolutionHost(
|
||||
/*hasDirectoryExists*/ true,
|
||||
{
|
||||
name: "/modules/a.ts",
|
||||
symlinks: ["/sub/node_modules/a/index.ts"],
|
||||
},
|
||||
{
|
||||
name: "/sub/node_modules/a/package.json",
|
||||
content: '{"version": "0.0.0", "main": "./index"}'
|
||||
}
|
||||
);
|
||||
const compilerOptions: CompilerOptions = { moduleResolution: ModuleResolutionKind.NodeJs };
|
||||
const cache = createModuleResolutionCache("/", (f) => f);
|
||||
let resolution = resolveModuleName("a", "/sub/dir/foo.ts", compilerOptions, host, cache);
|
||||
checkResolvedModule(resolution.resolvedModule, createResolvedModule("/modules/a.ts", /*isExternalLibraryImport*/ true));
|
||||
|
||||
resolution = resolveModuleName("a", "/sub/foo.ts", compilerOptions, host, cache);
|
||||
checkResolvedModule(resolution.resolvedModule, createResolvedModule("/modules/a.ts", /*isExternalLibraryImport*/ true));
|
||||
|
||||
resolution = resolveModuleName("a", "/foo.ts", compilerOptions, host, cache);
|
||||
assert.isUndefined(resolution.resolvedModule, "lookup in parent directory doesn't hit the cache");
|
||||
});
|
||||
});
|
||||
|
||||
describe("Module resolution - relative imports", () => {
|
||||
|
||||
@ -22,4 +22,4 @@ export class BindingKey<T> {
|
||||
export * from "./src/value-promise";
|
||||
export * from "./src/bindingkey";
|
||||
|
||||
// @link: tests/cases/compiler/monorepo/context -> tests/cases/compiler/monorepo/core/node_modules/@loopback/context
|
||||
// @link: tests/cases/compiler/monorepo/context -> tests/cases/compiler/monorepo/node_modules/@loopback/context
|
||||
Loading…
x
Reference in New Issue
Block a user