Репозиторий содержит файлы конфигурации для eslint.
Проекты подтягивают этот репозиторий через npm-зависимость.
Cсылка на конфиг прописывается в .eslintrc
проекта:
{
"extends": "@hh.ru/eslint-config"
}
Для поддержки TypeScript нужно создать блок overrides
{
"overrides": [
{
"files": "*.{ts,tsx}",
"extends": "@hh.ru/eslint-config/typescript",
},
],
}
Перед релизом надо прописать историю изменений в readme.md
и указать будущую версию. Версию в package.json менять не нужно, она проставится автоматически при релизе.
Публикация происходит через release.pyn.ru Нажимаем Create release -> library и выбираем eslint-config-hh
Обновлены eslint плагины для полноценной поддержки typescript 5.6.*
Изменена настройка правила no-floating-promises
: заперещен обход правила через вызов void
Поправил формат правила no-restricted-imports
- Добавлено правило для правильного импорта
date-fns
- Подняты версии зависимостей.
- Добавлены prettier и правила для него.
- Плагин для проверки корректность импортов bloko заменен на другой.
- Добавлено правило проверяющее корректность импортов bloko.
- Добавлена настройка для правила
@typescript-eslint/no-misused-promises
.
- Подняты версии зависимостей для поддержки typescript 4.9.5
- @typescript-eslint/eslint-plugin
- @typescript-eslint/parser
- Добавлено игнорирование
import/prefer-default-export
правила для*.js
и*.ts
файлов.
- Запретил использование noop в typescript, должно решаться на уровне интерфейсов.
- Добавлено правило запрета пустых функций для TS аналогично правилу для JS
- Добавлена пустая строка после новой матч-группы
- Добавлена новая матч-группа для сортировки импортов
- Добавлено правило регулирующее порядок импортов
- Добавлено правило, запрещающее абсолютные импорты less-файлов
- Добавлено правило, разрешающее импорт less-файлов из текущей папки по относительному пути
- Добавлены правила отключающие обязательность импорта React при объявлении jsx
- В TS-конфиг добавил правило для нейминга классов, енамов, интерфейсов и типов
- Поднял версии TS-зависимостей
- Добавлен конфиг для TypeScript
- Обновлен lodash в зависимостях на 4.17.19
- Запрещены non-ascii символы в идентификаторах
- Запрет относительных импортов реализован с помощью правила no-restricted-imports вместо no-restricted-syntax
- Запрещены относительные импорты
- Подняты версии зависимостей для поддержки eslint 6:
- babel-eslint
- eslint-plugin-dollar-sign
- eslint-plugin-import
- eslint-plugin-react-hooks
- Добавлено правило
exhaustive-deps
дляreact-hooks
- Поднята версия зависимости eslint-plugin-react-hooks
- Запрещены для использования относительные импорты в родительскую директорию (содержащие
..
) - Поднята версия зависимости eslint-plugin-import для поддержки eslint
5.x
- Добавлены правила для react hooks
- Добавлена peerDependency на
eslint >= 4.12.1
- Запрещены для использования
- curly всегда error
- Reflect
- Array.from в пользу spread
- Proxy
- WeakMap
- WeakSet
- typed arrays
- Generators
- В качестве парсера используется babel-eslint
- В parserOptions включены модули и jsx
- В no-unused-vars включен ignoreRestSiblings
- Поправил конфиг для es6:
- Добавил env browser и amd
- no-multiple-empty-lines уменьшил кол-во пустых строк до 1 и до 0 в начале файла
- no-restricted-properties выключил т.к. у airbnb запрещено использовать isNaN и Math.Pow
- arrow-parens - всегда используем () вокруг аргумента
- сгенерировал один конфиг файл для es6
- dot-notation разрешил использование allowKeywords (можно писать .catch())
- удалил index.js и legacy.js теперь main из package.json указывает на base.js
- Все правила переведены в error.
- Отключены правила:
- no-param-reassign — переназначем преимущественно для простановки значения по-умолчанию или корректировки входных данных, нет смысла запрещать.
- guard-for-in — у нас практически нет наследуемых объектов, нет смысла добавлять в каждом месте hasOwnProperty ради линтинга.
- Для правила no-plusplus разрешаем
++
/--
в циклах.
- Слили репы с es5 конфигом в одну
- Прописали
env
свойство - Обновили airbnb и зависимости
- Переводим
no-plusplus
в warn. - Переводим
no-mixed-operators
в warn, допускаем ввиду большого объема легаси.
- Отключаем
dot-notation
для ключевых слов для совместимости со старыми браузерами. - Отключаем
no-new
, иногда нужно просто создать экземпляр класса для запуска его внутренней кухни. - В свойствах объектов всегда используем camelCase.
- Оставляем только поддержку es6
- Первичный релиз
- Без поддержки es6