From 028972aec95c69f7f4c6324b1a126469071b7fe0 Mon Sep 17 00:00:00 2001 From: Dimitri Kopriwa <77674046+kopax-polyconseil@users.noreply.github.com> Date: Tue, 27 Sep 2022 12:54:30 +0300 Subject: [PATCH] feat(IgnoreImports): allow ignored imports in no-extraneous-dependency Fix : https://github.com/import-js/eslint-plugin-import/issues/2400 Idk how to use globs here, so it's no glob, and support `./` for rootDir --- src/rules/no-extraneous-dependencies.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/rules/no-extraneous-dependencies.js b/src/rules/no-extraneous-dependencies.js index 65c396e67..e2cf117e3 100644 --- a/src/rules/no-extraneous-dependencies.js +++ b/src/rules/no-extraneous-dependencies.js @@ -200,6 +200,7 @@ function reportIfMissing(context, deps, depsOptions, node, name) { if ( declarationStatus.isInDeps || + depsOptions.allowIgnoreImports || (depsOptions.allowDevDeps && declarationStatus.isInDevDeps) || (depsOptions.allowPeerDeps && declarationStatus.isInPeerDeps) || (depsOptions.allowOptDeps && declarationStatus.isInOptDeps) || @@ -216,6 +217,7 @@ function reportIfMissing(context, deps, depsOptions, node, name) { if ( declarationStatus.isInDeps || + depsOptions.allowIgnoreImports || (depsOptions.allowDevDeps && declarationStatus.isInDevDeps) || (depsOptions.allowPeerDeps && declarationStatus.isInPeerDeps) || (depsOptions.allowOptDeps && declarationStatus.isInOptDeps) || @@ -250,6 +252,16 @@ function testConfig(config, filename) { )); } +function testIgnoreImports(config, filename) { + if (!config) { + return true + } + return config.some(c => ( + filename.includes(value.substr(0, 2) === './' ? value.replace('.', process.cwd()) : value) + )) +} + + module.exports = { meta: { type: 'problem', @@ -268,6 +280,7 @@ module.exports = { 'packageDir': { 'type': ['string', 'array'] }, 'includeInternal': { 'type': ['boolean'] }, 'includeTypes': { 'type': ['boolean'] }, + 'ignoreImports': { 'type': ['array'] }, }, 'additionalProperties': false, }, @@ -280,6 +293,7 @@ module.exports = { const deps = getDependencies(context, options.packageDir) || extractDepFields({}); const depsOptions = { + allowIgnoreImports: testIgnoreImports(options.ignoreImports, filename) !== false, allowDevDeps: testConfig(options.devDependencies, filename) !== false, allowOptDeps: testConfig(options.optionalDependencies, filename) !== false, allowPeerDeps: testConfig(options.peerDependencies, filename) !== false,