@tinkoff/eslint-config
v6.0.0
Published
ESLint configs to rule them all
Downloads
6,645
Readme
@tinkoff/eslint-config
ESLint config includes rules for JS and TS codebase. Better to use with framework-oriented packages @tinkoff/eslint-config-react or @tinkoff/eslint-config-angular.
Requirements
ESLint >= 9 is required.
Usage
Install from npm
npm i --save-dev @tinkoff/eslint-configCreate eslint.config.js at the project root. Package includes eslint and prettier as dependencies, so you should remove them from your project package.json.
Base configurations
For application
import appConfig from '@tinkoff/eslint-config/app';
export default [...appConfig];For library
import libConfig from '@tinkoff/eslint-config/lib';
export default [...libConfig];Additional configurations
With Jest
import appConfig from '@tinkoff/eslint-config/app';
import jestConfig from '@tinkoff/eslint-config/jest';
export default [...appConfig, ...jestConfig];Configurations overview
Main configurations include common rules:
@tinkoff/eslint-config/app— common rules and specific rules for applications@tinkoff/eslint-config/lib— common rules and specific rules for libraries
Additional configurations. These configs do not include common eslint rules and must be included alongside main configurations:
@tinkoff/eslint-config/jest— rules for linting Jest test suites
Internal used plugins
@tinkoff/eslint-config/app and @tinkoff/eslint-config/lib include:
eslint-config-airbnb-extended— updated version of common and popular configurationeslint-config-airbnb@eslint-community/eslint-plugin-eslint-comments— validateeslintcommentseslint-plugin-import— validate proper importseslint-plugin-promise— enforce best practices for promiseseslint-plugin-jest— validate jest tests@typescript-eslint/eslint-plugin— lint TypeScript files, adopt many eslint rules to TS code, and provide specific TS ruleseslint-plugin-prettier— disable code formatting using eslint tools and transfer all the logic to prettier, and report differences as eslint issues
Troubleshooting
Wrong or duplicated eslint or some eslint plugins versions
Try to remove eslint, prettier, and @tinkoff/eslint-config internal dependencies from your project package.json,
then reinstall dependencies.
Usage tips for Nx monorepo
Connect to nx workspace
In root config
Create eslint.config.js at the workspace root:
import appConfig from '@tinkoff/eslint-config';
export default [
...appConfig,
{
ignores: ['**/*'],
},
];In apps and non-buildable/non-publishable libs
Create eslint.config.js in the project directory:
import rootConfig from '../../eslint.config';
import appConfig from '@tinkoff/eslint-config/app';
export default [
...rootConfig,
...appConfig,
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.json'],
},
},
},
];In buildable/publishable libs
import rootConfig from '../../eslint.config';
import libConfig from '@tinkoff/eslint-config/lib';
export default [
...rootConfig,
...libConfig,
{
files: ['**/*.ts', '**/*.tsx'],
languageOptions: {
parserOptions: {
project: ['./tsconfig.json'],
},
},
},
];Disable false-positive detections from import/no-unresolved
Override the rule in the project's eslint.config.js:
import appConfig from '@tinkoff/eslint-config/app';
export default [
...appConfig,
{
files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
rules: {
'import/no-unresolved': [
'error',
{
ignore: ['^@tinkoff/'],
},
],
},
},
];