From 3c1311844521dbdb06e76841a69520f0ec0442c2 Mon Sep 17 00:00:00 2001 From: Lars Kappert Date: Tue, 9 Jul 2024 13:03:34 +0200 Subject: [PATCH] Always pre-set `moduleResolution: bundler` if tsconfig.json --- packages/knip/src/PrincipalFactory.ts | 7 ++++--- packages/knip/src/index.ts | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/knip/src/PrincipalFactory.ts b/packages/knip/src/PrincipalFactory.ts index ad299c31..525b6d01 100644 --- a/packages/knip/src/PrincipalFactory.ts +++ b/packages/knip/src/PrincipalFactory.ts @@ -11,6 +11,7 @@ type Principals = Set; export type PrincipalOptions = { cwd: string; + isFile: boolean; compilerOptions: ts.CompilerOptions; paths: Paths; compilers: [SyncCompilers, AsyncCompilers]; @@ -47,8 +48,9 @@ export class PrincipalFactory { principals: Principals = new Set(); public getPrincipal(options: PrincipalOptions) { - const { cwd, compilerOptions, paths, pkgName, isIsolateWorkspaces, compilers } = options; + const { cwd, compilerOptions, isFile, paths, pkgName, isIsolateWorkspaces, compilers } = options; options.compilerOptions = mergePaths(cwd, compilerOptions, paths); + if (isFile) compilerOptions.moduleResolution ??= ts.ModuleResolutionKind.Bundler; const principal = this.findReusablePrincipal(compilerOptions); if (!isIsolateWorkspaces && principal) { this.linkPrincipal(principal, cwd, compilerOptions, pkgName, compilers); @@ -64,7 +66,6 @@ export class PrincipalFactory { const workspacePaths = compilerOptions?.paths ? Object.keys(compilerOptions.paths) : []; const principal = Array.from(this.principals).find(principal => { if (compilerOptions.pathsBasePath && principal.principal.compilerOptions.pathsBasePath) return false; - if (compilerOptions.moduleResolution !== principal.principal.compilerOptions.moduleResolution) return false; if (compilerOptions.baseUrl === principal.principal.compilerOptions.baseUrl) { return workspacePaths.every(p => !principal.pathKeys.has(p)); } @@ -82,7 +83,7 @@ export class PrincipalFactory { ) { const { pathsBasePath, paths } = compilerOptions; if (pathsBasePath) principal.principal.compilerOptions.pathsBasePath = pathsBasePath; - principal.principal.compilerOptions.moduleResolution ??= ts.ModuleResolutionKind.Bundler; + principal.principal.compilerOptions.moduleResolution ??= compilerOptions.moduleResolution; for (const p of Object.keys(paths ?? {})) principal.pathKeys.add(p); principal.principal.addPaths(paths); principal.principal.addCompilers(compilers); diff --git a/packages/knip/src/index.ts b/packages/knip/src/index.ts index 4e474df0..4ceca08c 100644 --- a/packages/knip/src/index.ts +++ b/packages/knip/src/index.ts @@ -123,6 +123,7 @@ export const main = async (unresolvedConfiguration: CommandLineOptions) => { const principal = factory.getPrincipal({ cwd: dir, paths: config.paths, + isFile, compilerOptions, compilers, pkgName,