feat: eslint-plugin-import rules

This commit is contained in:
Guz013
2023-09-02 04:41:18 -03:00
parent 5dfa998860
commit da8d4312a0
13 changed files with 61 additions and 7 deletions

View File

@@ -3,7 +3,7 @@
This is a list of rules that implements the same features and/or end
up fixing the same errors.
- **[`@typescript/member-ordering`][ts/member-ordering], [`@typescript/sort-type-constituents`][ts/sort-type-constituents]**:
- **[`@typescript/member-ordering`][ts/member-ordering], [`@typescript/sort-type-constituents`][ts/sort-type-constituents], [`import/order`][in/order]**:
implements the same functions from [`eslint-plugin-perfectionist`][plugin-perfectionist]
- **[`unicorn/no-for-loop`][un/no-for-loop] and [`@typescript/prefer-for-of`][ts/prefer-for-of]**:
@@ -26,4 +26,6 @@ up fixing the same errors.
[un/prefer-includes]: <https://github.com/sindresorhus/eslint-plugin-unicorn/blob/6d15a02d48de7ecfc38d0683a8487b2f937d83a0/docs/rules/prefer-includes.md>
[un/prefer-regexp-test]: <https://github.com/sindresorhus/eslint-plugin-unicorn/blob/6d15a02d48de7ecfc38d0683a8487b2f937d83a0/docs/rules/prefer-regexp-test.md>
[in/order]: <https://github.com/import-js/eslint-plugin-import/blob/6b95a021938139726b3f862beb37012d6e2afab2/docs/rules/order.md>
[plugin-perfectionist]: <https://eslint-plugin-perfectionist.azat.io/>

View File

@@ -1,10 +1,10 @@
declare module 'globals' {
const globals: {
browser: Record<string, boolean>
builtin: Record<string, boolean>
commonjs: Record<string, boolean>
node: Record<string, boolean>
nodeBuiltin: Record<string, boolean>
browser: { [rule: string]: boolean }
builtin: { [rule: string]: boolean }
commonjs: { [rule: string]: boolean }
node: { [rule: string]: boolean }
nodeBuiltin: { [rule: string]: boolean }
};
export default globals;
}

View File

@@ -1,4 +1,5 @@
import tsESLint from '@typescript-eslint/eslint-plugin';
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
import unicornPlugin from 'eslint-plugin-unicorn';
import tsParser from '@typescript-eslint/parser';

View File

@@ -1,4 +1,5 @@
/* eslint-disable unicorn/no-useless-spread */
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../../constants.js';
/** @type {import('eslint').Linter.FlatConfig} */

View File

@@ -1,4 +1,5 @@
/* eslint-disable unicorn/no-useless-spread */
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../../constants.js';
/** @type {import('eslint').Linter.FlatConfig} */
@@ -11,6 +12,9 @@ const commonjs = {
...{}, // Plugin: eslint-plugin-unicorn
'unicorn/prefer-module': 'off',
...{}, // Plugin: eslint-plugin-import
'import/no-commonjs': 'off',
},
};
@@ -20,6 +24,9 @@ const recommended = {
rules: {
...{}, // Plugin: eslint-plugin-unicorn
'unicorn/prefer-node-protocol': 'error',
...{}, // Plugin: eslint-plugin-import
'import/no-dynamic-require': 'error',
},
};

View File

@@ -1,5 +1,6 @@
/* eslint-disable unicorn/no-useless-spread */
import perfectionistPlugin from 'eslint-plugin-perfectionist';
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
/**
@@ -107,7 +108,6 @@ const recommended = {
'import/exports-last': 'error',
'import/first': 'error',
'import/group-exports': 'error',
'import/newline-after-import': ['error', { considerComments: true }],
...{}, // Plugin: eslint-plugin-perfectionist
...perfectionistPlugin.configs['recommended-natural'].rules,

View File

@@ -1,4 +1,5 @@
/* eslint-disable unicorn/no-useless-spread */
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
/**

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
// TODO [>=1.0.0]: Create a separate config for performance related practices

View File

@@ -1,4 +1,5 @@
/* eslint-disable unicorn/no-useless-spread */
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
/**
@@ -66,6 +67,13 @@ const recommended = {
'@typescript-eslint/no-redeclare': 'error',
'no-loss-of-precision': 'off',
'no-redeclare': 'off',
...{}, // Plugin: eslint-plugin-import
'import/default': 'error',
'import/export': 'error',
'import/named': 'error',
'import/namespace': 'error',
'import/no-unresolved': 'error',
},
};
@@ -90,6 +98,9 @@ const strict = {
'no-unused-private-class-members': 'error',
'no-use-before-define': 'error',
'require-atomic-updates': 'error',
...{}, // Plugin: eslint-plugin-import
'import/no-extraneous-dependencies': 'error',
},
};

View File

@@ -1,4 +1,5 @@
// eslint-disable-next-line import/no-relative-parent-imports
import { tsFiles } from '../constants.js';
/** @type {import('eslint').Linter.FlatConfig} */

View File

@@ -1,4 +1,5 @@
/* eslint-disable unicorn/no-useless-spread */
// eslint-disable-next-line import/no-relative-parent-imports
import { jsFiles, tsFiles } from '../constants.js';
/**
@@ -190,6 +191,17 @@ const recommended = {
'unicorn/switch-case-braces': 'error',
'unicorn/text-encoding-identifier-case': 'error',
'unicorn/throw-new-error': 'error',
...{}, // Plugin: eslint-plugin-import'error',
'import/no-amd': 'error',
'import/no-commonjs': 'error',
'import/no-deprecated': 'error',
'import/no-duplicates': 'error',
'import/no-empty-named-blocks': 'error',
'import/no-named-as-default': 'error',
'import/no-named-as-default-member': 'error',
'import/no-self-import': 'error',
'import/no-useless-path-segments': 'error',
},
};
@@ -332,6 +344,21 @@ const strict = {
'unicorn/no-unsafe-regex': 'error',
'unicorn/no-unused-properties': 'error',
...{}, // Plugin: eslint-plugin-import
'import/extensions': ['error', 'always', { ignorePackages: true }],
'import/max-dependencies': ['error', { ignoreTypeImports: true, max: 10 }],
'import/no-absolute-path': 'error',
'import/no-anonymous-default-export': 'error',
'import/no-cycle': 'error',
'import/no-import-module-exports': 'error',
'import/no-mutable-exports': 'error',
'import/no-named-default': 'error',
'import/no-relative-packages': 'error',
'import/no-relative-parent-imports': 'error',
'import/no-unassigned-import': ['error', { allow: ['**/*.css', '**/*.scss', '**/*.less'] }],
'import/prefer-default-export': 'error',
'import/unambiguous': 'error',
},
};

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line import/no-relative-parent-imports
import configs from '../configs/index.js';
/** @type {import('eslint').Linter.FlatConfig[]} */

View File

@@ -1,3 +1,4 @@
// eslint-disable-next-line import/no-relative-parent-imports
import configs from '../configs/index.js';
/** @type {import('eslint').Linter.FlatConfig[]} */