Skip to content

Commit c0cea7b

Browse files
authoredJul 2, 2024··
fix: allow incorrect file path in extraneous deps check (#101)
1 parent 0f07c36 commit c0cea7b

File tree

3 files changed

+28
-6
lines changed

3 files changed

+28
-6
lines changed
 

‎.changeset/bright-taxis-smell.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"eslint-plugin-import-x": minor
3+
---
4+
5+
Allow incorrect file path in extraneous deps check

‎src/rules/no-extraneous-dependencies.ts

+14-6
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,11 @@ function extractDepFields(pkg: PackageJson) {
5555

5656
function getPackageDepFields(packageJsonPath: string, throwAtRead: boolean) {
5757
if (!depFieldCache.has(packageJsonPath)) {
58-
const depFields = extractDepFields(readJSON(packageJsonPath, throwAtRead)!)
59-
depFieldCache.set(packageJsonPath, depFields)
58+
const packageJson = readJSON<PackageJson>(packageJsonPath, throwAtRead)
59+
if (packageJson) {
60+
const depFields = extractDepFields(packageJson)
61+
depFieldCache.set(packageJsonPath, depFields)
62+
}
6063
}
6164
return depFieldCache.get(packageJsonPath)
6265
}
@@ -83,10 +86,15 @@ function getDependencies(context: RuleContext, packageDir?: string | string[]) {
8386
// use rule config to find package.json
8487
for (const dir of paths) {
8588
const packageJsonPath = path.resolve(dir, 'package.json')
86-
const packageContent_ = getPackageDepFields(packageJsonPath, true)!
87-
for (const depsKey of Object.keys(packageContent)) {
88-
const key = depsKey as keyof PackageDeps
89-
Object.assign(packageContent[key], packageContent_[key])
89+
const packageContent_ = getPackageDepFields(
90+
packageJsonPath,
91+
paths.length === 1,
92+
)
93+
if (packageContent_) {
94+
for (const depsKey of Object.keys(packageContent)) {
95+
const key = depsKey as keyof PackageDeps
96+
Object.assign(packageContent[key], packageContent_[key])
97+
}
9098
}
9199
}
92100
} else {

‎test/rules/no-extraneous-dependencies.spec.ts

+9
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const packageDirBundledDepsAsObject = testFilePath(
4848
const packageDirBundledDepsRaceCondition = testFilePath(
4949
'bundled-dependencies/race-condition',
5050
)
51+
const emptyPackageDir = testFilePath('empty-folder')
5152

5253
ruleTester.run('no-extraneous-dependencies', rule, {
5354
valid: [
@@ -130,6 +131,14 @@ ruleTester.run('no-extraneous-dependencies', rule, {
130131
code: 'import leftpad from "left-pad";',
131132
options: [{ packageDir: packageDirMonoRepoRoot }],
132133
}),
134+
test({
135+
code: 'import leftpad from "left-pad";',
136+
options: [{ packageDir: [emptyPackageDir, packageDirMonoRepoRoot] }],
137+
}),
138+
test({
139+
code: 'import leftpad from "left-pad";',
140+
options: [{ packageDir: [packageDirMonoRepoRoot, emptyPackageDir] }],
141+
}),
133142
test({
134143
code: 'import react from "react";',
135144
options: [

0 commit comments

Comments
 (0)
Please sign in to comment.