Пакет с пресетами конфигураций линтеров.
# npm
$ npm i -D @sima-land/linters eslint stylelint prettier
# или yarn
yarn add -D @sima-land/linters eslint stylelint prettier
{
"prettier": "@sima-land/linters/prettier",
"eslintConfig": {
"extends": "./node_modules/@sima-land/linters/eslint/index.js"
},
"stylelint": {
"extends": "@sima-land/linters/stylelint"
}
}
Создать в корне проекта файл eslint.config.mjs
со следующим содержимым:
import simaland from '@sima-land/linters/eslint';
export default [
// используем все правила из пакета, собранные вместе
...simaland,
// ...опционально переопределяем правила
];
Правила разбиты по модулям:
./linters/eslint/base
- базовые правила JS./linters/eslint/typescript
- базовые правила TS./linters/eslint/react
- правила React/JSX./linters/eslint/lodash
- правила работы с Lodash./linters/eslint/jest
- правила работы с Jest./linters/eslint/testing-library
- правила работы с Testing Library./linters/eslint/jsdoc
- правила оформления JSDoc./linters/eslint/jsdoc-ts
- правила оформления JSDoc в TS./linters/eslint/jsdoc-jest
- правила оформления JSDoc в тестах Jest./linters/eslint
- все правила вместе
Создать в корне проекта файл stylelint.config.сjs
со следующим содержимым:
module.exports = {
extends: require.resolve('@sima-land/linters/stylelint'),
};
Создать в корне проекта файл .prettierrc.js
со следующим содержимым:
module.exports = require('@sima-land/linters/prettier');
Удобно использовать husky
в связке с lint-staged
, для этого необходимо:
- Установить пакеты
npm i -D husky lint-staged
- Создать в корне проекта файл
lint-staged.config.сjs
со следующим содержимым:
module.exports = {
'*.{js,jsx,ts,tsx}': ['prettier --write', 'eslint --fix --ext .js,.jsx,.ts,.tsx'],
'*.{css,scss}': ['prettier --write', 'stylelint'],
};
- Добавить pre-commit хук согласно документации husky:
npx lint-staged
https://typicode.github.io/husky/#/?id=create-a-hook
ESLint может бросать ошибку, говоря что не может найти плагины, требуемые в конфигурации.
В этом случае поможет пакет @rushstack/eslint-patch
:
- https://www.npmjs.com/package/@rushstack/eslint-patch
- https://github.com/microsoft/rushstack/tree/main/eslint/eslint-patch
Актуальная информация в официальных документациях: