Skip to content

Commit

Permalink
Always pre-set moduleResolution: bundler if tsconfig.json
Browse files Browse the repository at this point in the history
  • Loading branch information
webpro committed Jul 9, 2024
1 parent 34be850 commit 3c13118
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 3 deletions.
7 changes: 4 additions & 3 deletions packages/knip/src/PrincipalFactory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type Principals = Set<Principal>;

export type PrincipalOptions = {
cwd: string;
isFile: boolean;
compilerOptions: ts.CompilerOptions;
paths: Paths;
compilers: [SyncCompilers, AsyncCompilers];
Expand Down Expand Up @@ -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);
Expand All @@ -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));
}
Expand All @@ -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);
Expand Down
1 change: 1 addition & 0 deletions packages/knip/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,7 @@ export const main = async (unresolvedConfiguration: CommandLineOptions) => {
const principal = factory.getPrincipal({
cwd: dir,
paths: config.paths,
isFile,
compilerOptions,
compilers,
pkgName,
Expand Down

0 comments on commit 3c13118

Please sign in to comment.