Линтеры и тестеры
- ESLint. Знакомство
- ESLint в команде
- Держи свой код чистым с помощью ESLint
- Программируем лучше с ESLint, Prettier и TypeScript
Тема «Code style». Статический анализ кода
Инструмент для скриптов
- ESlint — это инструмент статического анализа кода, написанного на любом выбранном стандарте JS.
- Rules in ESLint;
- Готовые конфиги;
- Библиотека TSLint - deprecated;
Полезное:
- ESlint. Знакомство;
- Сложно о простом;
- Держи свой код чистым;
- Программируем лучше с ESLint, Prettier и TypeScript.
Линтеры — это полезные инструменты, которые в пределах своих возможностей будут держать код «в чистоте». Чтобы они полностью раскрыли свой потенциал, нужно уделить время их дополнительной настройке.
ESLint
ESLint. Он представляет собой инструмент статического анализа кода, написанного на любом выбранном стандарте JS.
Поскольку он нужен только на этапе разработки кода, сохраняем его зависимости для разработки (devDependencies в package.json). Установка из npm:
npm install --save-dev eslint
Правила линтера описывают в конфиге .eslintrc.json. Можно использовать как JSON, так и JS:
{
"rules": {
"no-unused-vars": 2,
"max-len": [1, 100],
"max-params": [2, 3]
}
}
Правил очень много, полный список найдёте на сайте разработчиков. Настройка всего «под себя» может занять много времени, но будет полезно один раз это сделать. Так, например, с редактором Vim. Он заслужил славу очень сложного инструмента и стал предметом многих мемов, но если один раз настроить его, Vim станет значительно удобнее. Для быстрого старта или чтобы не тратить время команды, которой надо супербыстро запустить проект, — существуют готовые наборы правил, например eslint-config-airbnb:
npm install --save-dev eslint-config-airbnb
Правила можно не только наследовать, но и переопределять:
{
"extends": "airbnb", // Здесь вы указываете, что наследуетесь от набора правил
"rules": {
"max-len": [2, 100],
"max-params": [2, 3]
}
}
Наборы готовых конфигов можете найти в npm.
Бывают случаи, когда не нужно прогонять через линтер определённые файлы или папки. Варианты решения:
- При запуске линтера явно указать, проверять или не проверять определённые папки, префиксы или расширения файлов;
- Указать файл
.eslintignoreи прописать в нём, какие файлы или папки не трогать.
Например, не проверять node_modules, build или dist, минифицированные, собранные файлы:
/build
**/*.min.js
/node_modules
Иногда необходимо игнорировать правила в коде (одну или много строчек). Чтобы ESlint понимал, что именно пропустить, используйте комментарии:
function onError(err, req, res, next) {
/* eslint no-unused-vars: 0 */
/* eslint max-params: [2, 4] */
res.sendStatus(500);
}
Для начала процесса достаточно в консоли ввести команду запуска бинарного файла:
node_modules/.bin/eslint .
ESlint умеет не только находить ошибки, но и исправлять их. Например, во всём проекте нет точки с запятой в конце строк, решили поставить потом. Если поправить правило в конфиге и запустить линтер с определённым ключом, инструмент сам всё сделает как надо:
node_modules/.bin/eslint . --fix
Однако далеко не все правила fixable, то есть не все могут быть автоматически исправлены. В таких случаях придётся править вручную.
ESlint отлично работает в VS Code и WebStorm.
ESLint и TypeScript
На просторах интернета можно встретить библиотеку TSLint. Она уже давно deprecated, что говорит о необходимости использовать ESlint для всего: JS или TS-файлов.
ESlint умеет «дружить» с TypeScript. Существуют отдельные плагины для этого:
npm install --save-dev @typescript-eslint/parser
npm install --save-dev @typescript-eslint/eslint-plugin
Правила для TS пишутся точно так же, как и для JS:
{
"extends": "airbnb",
"parser": "@typescript-eslint/parser",
"plugins": ["@typescript-eslint"],
"rules": {
"max-len": [2, 100],
"@typescript-eslint/no-unused-vars": 2
}
}
ESLint - установка
ESLint — это утилита, которая может анализировать написанный код. Фактически, это статический анализатор кода, и он может находить синтаксические ошибки, баги или неточности форматирования. В других языках, например, Go, это является неотъемлемой частью языка программирования.
1. Установить ESLint:
npm i -g eslint - Глобально
npm i --save-dev - Локально
2. Инициализация:
eslint --init
Ответить на вопросы:
> To check syntax and find problems
> JavaScript modules (import/export)
> React
> TypeScript
> Browser
> JSON
Автоматически установятся пакеты и создастся конфиг-файл .eslintrc.json
3. .vscode/settings.json (Нужно установить плагин в браузере ESLint)
{
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.validate": ["javascript"]
}
4. Установка конфига eslint-config-airbnb
npm install --save-dev eslint-config-airbnb
5. .eslintignore
Какие файлы не проверять (игнорировать)
/dist
**/*.min.js
/node_modules
6. Конфиг-файл .eslintrc.json
Примерный конфиг
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"airbnb",
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"overrides": [],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["@typescript-eslint"],
"rules": {
"quotes": ["error", "single"],
"semi": ["error", "always"],
"indent": ["error", 2],
"no-unused-vars": 2,
"max-len": [1, 100],
"max-params": [2, 3]
}
}
7. npm-cкрипты
"lint": "eslint . ",
"lint:fix": "eslint . --fix"