UNPKG

@jpapini/eslint-config

Version:

Custom ESLint configuration for JavaScript and TypeScript projects.

153 lines (137 loc) 5.84 kB
import * as tsResolver from 'eslint-import-resolver-typescript'; import importX from 'eslint-plugin-import-x'; import tseslint from 'typescript-eslint'; /** * Import X configuration * @url https://github.com/un-ts/eslint-plugin-import-x */ export default tseslint.config( { name: 'import-x-config', extends: [importX.flatConfigs.recommended], rules: { /** * Forbid empty named import blocks. * @fixable * @suggestion * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-empty-named-blocks.md */ 'import-x/no-empty-named-blocks': 'error', /** * Forbid the use of mutable exports with var or let. * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-mutable-exports.md */ 'import-x/no-mutable-exports': 'error', /** * Forbid importing a default export by a different name. * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-rename-default.md */ 'import-x/no-rename-default': 'off', /** * Forbid modules without exports, or exports without matching import in another module. * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-unused-modules.md */ 'import-x/no-unused-modules': 'error', /** * Forbid import of modules using absolute paths. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-absolute-path.md */ 'import-x/no-absolute-path': 'error', /** * Forbid a module from importing a module with a dependency path back to itself. * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-cycle.md */ 'import-x/no-cycle': 'error', /** * Forbid importing packages through relative paths. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-relative-packages.md */ 'import-x/no-relative-packages': 'error', /** * Forbid a module from importing itself. * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-self-import.md */ 'import-x/no-self-import': 'error', /** * Forbid unnecessary path segments in import and require statements. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-useless-path-segments.md */ 'import-x/no-useless-path-segments': 'error', /** * Enforce or ban the use of inline type-only markers for named imports. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/consistent-type-specifier-style.md */ 'import-x/consistent-type-specifier-style': ['error', 'prefer-top-level'], /** * Ensure all imports appear before other statements. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/first.md */ 'import-x/first': 'error', /** * Enforce a newline after import statements. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/newline-after-import.md */ 'import-x/newline-after-import': 'error', /** * Enforce a convention in module import order. * @fixable * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/order.md */ 'import-x/order': 'off', // 'import-x/order': [ // 'error', // { // 'newlines-between': 'always', // 'distinctGroup': true, // 'alphabetize': { // order: 'asc', // caseInsensitive: true, // }, // 'groups': [ // 'builtin', // 'external', // 'internal', // 'parent', // 'sibling', // 'index', // 'object', // ], // 'pathGroups': [ // { // pattern: '~/**', // group: 'internal', // position: 'before', // }, // ], // }, // ], /** * Allow named exports as default * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-named-as-default.md */ 'import-x/no-named-as-default': 'off', /** * Allow unresolved imports * @url https://github.com/un-ts/eslint-plugin-import-x/blob/master/docs/rules/no-unresolved.md */ 'import-x/no-unresolved': 'off', }, }, { name: 'import-x-config-typescript', files: ['**/*.{ts,tsx}'], extends: [importX.flatConfigs.typescript], settings: { 'import-x/resolver': { name: 'tsResolver', resolver: tsResolver, }, }, }, );