feat: ✨ eslint-plugin-import rules
This commit is contained in:
@@ -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/>
|
||||
|
||||
10
configs/js/src/@types/globals.d.ts
vendored
10
configs/js/src/@types/globals.d.ts
vendored
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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';
|
||||
|
||||
@@ -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} */
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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';
|
||||
|
||||
/**
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import { tsFiles } from '../constants.js';
|
||||
|
||||
/** @type {import('eslint').Linter.FlatConfig} */
|
||||
|
||||
@@ -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',
|
||||
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import configs from '../configs/index.js';
|
||||
|
||||
/** @type {import('eslint').Linter.FlatConfig[]} */
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
// eslint-disable-next-line import/no-relative-parent-imports
|
||||
import configs from '../configs/index.js';
|
||||
|
||||
/** @type {import('eslint').Linter.FlatConfig[]} */
|
||||
|
||||
Reference in New Issue
Block a user