Skip to content

Commit 42dbfce

Browse files
committedNov 30, 2023
Don't complain about ignoredWorkspaces without a package.json
1 parent ecee44b commit 42dbfce

File tree

4 files changed

+14
-5
lines changed

4 files changed

+14
-5
lines changed
 

‎packages/knip/fixtures/workspaces-ignored/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@
44
"ignoreWorkspaces": [
55
"packages/c",
66
"packages/d*",
7-
"packages/f"
7+
"packages/f",
8+
"packages/g"
89
]
910
}
1011
}

‎packages/knip/fixtures/workspaces-ignored/packages/g/main.c

Whitespace-only changes.

‎packages/knip/src/ConfigurationChief.ts

+7-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { arrayify } from './util/array.js';
1010
import parsedArgValues from './util/cli-arguments.js';
1111
import { partitionCompilers } from './util/compilers.js';
1212
import { ConfigurationError, LoaderError } from './util/errors.js';
13-
import { findFile, loadJSON } from './util/fs.js';
13+
import { findFile, isDirectory, isFile, loadJSON } from './util/fs.js';
1414
import { getIncludedIssueTypes } from './util/get-included-issue-types.js';
1515
import { _dirGlob } from './util/glob.js';
1616
import { _load } from './util/loader.js';
@@ -468,8 +468,11 @@ export class ConfigurationChief {
468468
public getUnusedIgnoredWorkspaces() {
469469
const ignoredWorkspaceNames = this.config.ignoreWorkspaces;
470470
const workspaceNames = [...this.manifestWorkspaces.keys(), ...this.additionalWorkspaceNames];
471-
return ignoredWorkspaceNames.filter(
472-
ignoredWorkspaceName => !workspaceNames.some(name => micromatch.isMatch(name, ignoredWorkspaceName))
473-
);
471+
return ignoredWorkspaceNames
472+
.filter(ignoredWorkspaceName => !workspaceNames.some(name => micromatch.isMatch(name, ignoredWorkspaceName)))
473+
.filter(ignoredWorkspaceName => {
474+
const dir = join(this.cwd, ignoredWorkspaceName);
475+
return !isDirectory(dir) || isFile(join(dir, 'package.json'));
476+
});
474477
}
475478
}

‎packages/knip/src/util/fs.ts

+5
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import stripJsonComments from 'strip-json-comments';
55
import { LoaderError } from './errors.js';
66
import { dirname, join } from './path.js';
77

8+
export const isDirectory = (filePath: string) => {
9+
const stat = statSync(filePath, { throwIfNoEntry: false });
10+
return stat !== undefined && stat.isDirectory();
11+
};
12+
813
export const isFile = (filePath: string) => {
914
const stat = statSync(filePath, { throwIfNoEntry: false });
1015
return stat !== undefined && stat.isFile();

0 commit comments

Comments
 (0)
Please sign in to comment.