diff --git a/src/rules/noImplicitDependenciesRule.ts b/src/rules/noImplicitDependenciesRule.ts index 0990e692fb1..97ece70d6e2 100644 --- a/src/rules/noImplicitDependenciesRule.ts +++ b/src/rules/noImplicitDependenciesRule.ts @@ -114,20 +114,24 @@ function getDependencies(fileName: string, options: Options): Set { const result = new Set(); const packageJsonPath = findPackageJson(path.resolve(path.dirname(fileName))); if (packageJsonPath !== undefined) { - // don't use require here to avoid caching - // remove BOM from file content before parsing - const content = JSON.parse(fs.readFileSync(packageJsonPath, "utf8").replace(/^\uFEFF/, "")) as PackageJson; - if (content.dependencies !== undefined) { - addDependencies(result, content.dependencies); - } - if (!options.dev && content.peerDependencies !== undefined) { - addDependencies(result, content.peerDependencies); - } - if (options.dev && content.devDependencies !== undefined) { - addDependencies(result, content.devDependencies); - } - if (options.optional && content.optionalDependencies !== undefined) { - addDependencies(result, content.optionalDependencies); + try { + // don't use require here to avoid caching + // remove BOM from file content before parsing + const content = JSON.parse(fs.readFileSync(packageJsonPath, "utf8").replace(/^\uFEFF/, "")) as PackageJson; + if (content.dependencies !== undefined) { + addDependencies(result, content.dependencies); + } + if (!options.dev && content.peerDependencies !== undefined) { + addDependencies(result, content.peerDependencies); + } + if (options.dev && content.devDependencies !== undefined) { + addDependencies(result, content.devDependencies); + } + if (options.optional && content.optionalDependencies !== undefined) { + addDependencies(result, content.optionalDependencies); + } + } catch { + // treat malformed package.json files as empty } } diff --git a/test/rules/no-implicit-dependencies/default/malformed/package.json b/test/rules/no-implicit-dependencies/default/malformed/package.json new file mode 100644 index 00000000000..8c94190c464 --- /dev/null +++ b/test/rules/no-implicit-dependencies/default/malformed/package.json @@ -0,0 +1,3 @@ +{ + , +} diff --git a/test/rules/no-implicit-dependencies/default/malformed/tets.ts.lint b/test/rules/no-implicit-dependencies/default/malformed/tets.ts.lint new file mode 100644 index 00000000000..217310ee713 --- /dev/null +++ b/test/rules/no-implicit-dependencies/default/malformed/tets.ts.lint @@ -0,0 +1,2 @@ +import foo from 'foo'; + ~~~~~ [Module 'foo' is not listed as dependency in package.json]