@nsmp/eslint-plugin-rules
v2.1.0
Published
ESLint configuration
Keywords
Readme
eslint-plugin-rules
Плагин предоставляет несколько конфигураций ESLint:
Содержание
Требования
- ESLint >=8.57.0
Подготовка к установке
Во избежание конфликтов рекомендуется удалить все зависимости, имеющие отношение к eslint, так как они устанавливаются вместе с плагином.
npm uninstall eslint-config-standard eslint-plugin-standard eslint-plugin-promise eslint-plugin-import eslint-plugin-node eslint-plugin-jest eslint-plugin-n eslint-plugin-react eslint-plugin-react-hooksУстановка
Установите или обновите ESLint:
npm install --save-dev eslintУстановите плагин eslint-plugin-rules:
npm install --save-dev @nsmp/eslint-plugin-rulesДополнительный парсер не поставляется вместе с плагином. Для js файлов используется парсер по умолчанию из eslint.
Если возможностей парсера по умолчанию недостаточно, можете установить один из рекомендованных eslint плагинов:
- для js файлов:
- при использовании в проекте TypeScript специальный парсер обязателен:
В случае возникновения ошибок с зависимостями, рекомендуется выполнить следующие действия:
- удалите package-lock.json
- удалите node_modules
- в некоторых случаях очистите кэш командой
npm cache clean --force - установите все зависимости командой
npm install
Использование
Создать новый файл конфигурации или переименовать существующий в eslint.config.cjs
В файле конфигурации необходимо создать следующую структуру:
module.exports = [];Массив заполняется объектами, содержащими информацию о требуемой конфигурации:
- recommended-js (если установлен jest, то правила для него будут добавлены автоматически);
- recommended-ts;
- recommended-react;
- recommended-custom-rules;
- recommended-styled-components
- языковые настройки
languageOptions; - переопределяемые правила
rules:- в большинстве случаев можно оставить раздел "rules" пустым;
- в случае необходимости вы можете переопределять любые правила (подробнее см. Переопределение и дополнение правил);
- игнорируемые файлы и папки
ignores:- перенести из файла
.eslintignoreигнорируемые папки и файлы в параметрignores; - удалить файл
.eslintignore; - папки
node_modules,build,distигнорируются настройками плагина, поэтому вignoresих добавлять нет необходимости; - плагин проверяет только файлы с расширением
.ts,.tsx,.js,.jsx,.mjs,.cjs, поэтому файлы с иным расширением вignoresможно не указывать.
- перенести из файла
Пример (eslint.config.cjs)
В примере ниже подключены все доступные конфигурации eslint-plugin-rules, но вам необходимо выбрать подходящие для вашего проекта:
const parser = require('@typescript-eslint/parser');
const rulesPlugin = require('@nsmp/eslint-plugin-rules');
const {configs} = rulesPlugin;
module.exports = [
...configs['recommended-js'],
...configs['recommended-ts'],
...configs['recommended-react'],
...configs['recommended-custom-rules'],
{
languageOptions: {
parser
},
rules: {}
},
{
ignores: [
'src/stubs/**'
]
}
];recommended-js
Предназначен для всех проектов, т.к. содержит все базовые правила для JavaScript.
Этой конфигурации соответствуют:
Плагины (plugins):
- @stylistic
- eslint-plugin-import
- eslint-plugin-jest (подключается опционально, если в проекте идентифицирован установленный
jest) - eslint-plugin-n
- eslint-plugin-perfectionist
- eslint-plugin-promise
- eslint-plugin-simple-import-sort
- eslint-plugin-testing-library (подключается опционально, если в проекте идентифицирован установленный
@testing-library/dom)
Правила (rules):
- рекомендованные правила js
- непосредственно от
eslint - часть правил форматирования кода, помеченные
eslintкак deprecated (устаревшие) заменены на@stylisticправила
- непосредственно от
- рекомендованные правила для плагина
import - рекомендованные правила для плагина
jest(подключаются опционально, если в проекте идентифицирован установленныйjest) - рекомендованные правила для плагина
n - рекомендованные правила сортировки ключей объектов для плагина
perfectionist - рекомендованные правила из конфигурации плагина
promise - рекомендованные правила сортировки импортов для плагина
simple-import-sort - рекомендованные правила из конфигурации плагина
testing-library(подключаются опционально, если в проекте идентифицирован установленный@testing-library/dom) - правила, переопределяющие часть рекомендованных
- рекомендованные правила js
recommended-custom-rules
Включает правила, которых нет в стандартной конфигурации ESLint:
- no-fetch-xhr - правило, запрещающее использование fetch и XMLHttpRequest при разработке
- potential-xss - правило для предупреждения об XSS уязвимости
- sort-class-methods - правила сортировки методов в классе
recommended-ts
Предназначен для проектов, написанных на TypeScript.
Этой конфигурации соответствуют:
- Плагины (plugins):
- @typescript-eslint/eslint-plugin
- eslint-plugin-perfectionist
- Правила (rules):
- рекомендованные правила TypeScript
- рекомендованные правила сортировки типов и интерфейсов для плагина
perfectionist - правила, переопределяющие часть стандартных для TypeScript.
recommended-react
Предназначен для проектов, написанных на React.
Этой конфигурации соответствуют:
- Плагины (plugins):
- eslint-plugin-react
- eslint-plugin-react-hooks
- eslint-plugin-testing-library (подключается опционально, если в проекте идентифицирован установленный
@testing-library/react)
- Правила (rules):
- рекомендованные правила из конфигурации плагина
react - рекомендованные правила из конфигурации плагина
react-hooks - рекомендованные правила из конфигурации плагина
testing-library(подключаются опционально, если в проекте идентифицирован установленный@testing-library/react) - правила, переопределяющие часть рекомендованных
- рекомендованные правила из конфигурации плагина
recommended-styled-components
Предназначен для проектов, использующих styled-components.
Этой конфигурации соответствуют:
- Плагин (plugin):
- eslint-plugin-better-styled-components
- Правила (rules):
- правило сортировки CSS-свойств в styled-компонентах
Переопределение и дополнение правил
Вы можете управлять режимом работы любых правил, которые поставляются любой из конфигураций:
- стандартные правила ESLint,
- правила любого из включенных плагинов,
- кастомные правила.
Для этого достаточно указать нужное значение правила в разделе "rules" файла eslint.config.cjs:
rules: {
'@nsmp/rules/no-fetch-xhr': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'jest/valid-expect-in-promise': 'off',
'react-hooks/exhaustive-deps': 'off',
'react/jsx-sort-props': 'off',
'sort-keys': 'off'
}Пример подключения плагина
До
Файл .eslintrc
{
"env": {
"browser": true,
"es6": true,
"jest": true,
"node": true
},
"extends": [
"plugin:@nsmp/rules/recommended-js",
"plugin:@nsmp/rules/recommended-ts",
"plugin:@nsmp/rules/recommended-react",
"plugin:@nsmp/rules/recommended-custom-rules"
],
"ignorePatterns": [
"/src/stubs/initialInfo.ts"
],
"parser": "@typescript-eslint/parser",
"plugins": [
"@nsmp/rules"
],
"settings": {
"react": {
"version": "detect"
}
},
"rules": {
"@nsmp/rules/no-fetch-xhr": "off",
"@nsmp/rules/sort-class-methods": "off",
"@typescript-eslint/no-unused-vars": "off",
"jest/valid-expect-in-promise": "off",
"no-multiple-empty-lines": "off",
"no-undef": "off",
"prefer-regex-literals": "off",
"react-hooks/exhaustive-deps": "off",
"react/jsx-sort-props": "off",
"react/prop-types": "off",
"sort-keys": "off"
}
}Файл .eslintignore
# IDE
.idea
.vscode
# Node.js
node_modules
# builds
build
*.zip
# git
commiter.sh
log.shПосле (файл eslint.config.cjs)
const parser = require('@typescript-eslint/parser');
const rulesPlugin = require('@nsmp/eslint-plugin-rules');
const {configs} = rulesPlugin;
module.exports = [
...configs['recommended-js'],
...configs['recommended-ts'],
...configs['recommended-react'],
...configs['recommended-custom-rules'],
{
languageOptions: {
parser
},
rules: {
'@nsmp/rules/no-fetch-xhr': 'off',
'@nsmp/rules/sort-class-methods': 'off',
'@typescript-eslint/no-unused-vars': 'off',
'jest/valid-expect-in-promise': 'off',
'no-multiple-empty-lines': 'off',
'no-undef': 'off',
'prefer-regex-literals': 'off',
'react-hooks/exhaustive-deps': 'off',
'react/jsx-sort-props': 'off',
'react/prop-types': 'off',
'sort-keys': 'off'
}
},
{
ignores: [
'src/stubs/initialInfo.ts'
]
}
];Запуск проверки скриптом из файла package.json
До
"lint": "npx eslint --ext .ts,.js,.tsx -c .eslintrc ./"После
"lint": "npx eslint ."Проверка запускается для текущего рабочего каталога, где расположен файл конфигурации.
FAQ
Как использовать плагин в проекте с flow?
Для проекта на Flow данный плагин не предусмотрен.
