Skip to content

hhru/eslint-config-hh

Repository files navigation

Warning

Репо больше не актуален, мы перенесли его в основной monorepository c фронтенд пакетами. Пакет, все также публикуется в npm

eslint конфиги hh.ru

Репозиторий содержит файлы конфигурации для 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

История изменений

15.2.1

Обновлены eslint плагины для полноценной поддержки typescript 5.6.*

15.2.0

Изменена настройка правила no-floating-promises: заперещен обход правила через вызов void

15.1.1

Поправил формат правила no-restricted-imports

15.1.0

  • Добавлено правило для правильного импорта date-fns

15.0.0

  • Подняты версии зависимостей.

14.1.0

  • Добавлены prettier и правила для него.

14.0.1

  • Плагин для проверки корректность импортов bloko заменен на другой.

14.0.0

  • Добавлено правило проверяющее корректность импортов bloko.

13.2.1

  • Добавлена настройка для правила @typescript-eslint/no-misused-promises.

13.2.0

  • Подняты версии зависимостей для поддержки typescript 4.9.5
    • @typescript-eslint/eslint-plugin
    • @typescript-eslint/parser

13.1.0

  • Добавлено игнорирование import/prefer-default-export правила для *.js и *.ts файлов.

13.0.0

  • Запретил использование noop в typescript, должно решаться на уровне интерфейсов.

12.3.0

  • Добавлено правило запрета пустых функций для TS аналогично правилу для JS

12.2.1

  • Добавлена пустая строка после новой матч-группы

12.2.0

  • Добавлена новая матч-группа для сортировки импортов

12.1.0

  • Добавлено правило регулирующее порядок импортов

12.0.0

  • Добавлено правило, запрещающее абсолютные импорты less-файлов

11.1.0

  • Добавлено правило, разрешающее импорт less-файлов из текущей папки по относительному пути

11.0.0

  • Добавлены правила отключающие обязательность импорта React при объявлении jsx

10.1.0

  • В TS-конфиг добавил правило для нейминга классов, енамов, интерфейсов и типов

10.0.1

  • Поднял версии TS-зависимостей

10.0.0

  • Добавлен конфиг для TypeScript

8.1.1

  • Обновлен lodash в зависимостях на 4.17.19

8.1.0

  • Запрещены non-ascii символы в идентификаторах

7.0.1

  • Запрет относительных импортов реализован с помощью правила no-restricted-imports вместо no-restricted-syntax

7.0.0

  • Запрещены относительные импорты

6.1.0

  • Подняты версии зависимостей для поддержки eslint 6:
    • babel-eslint
    • eslint-plugin-dollar-sign
    • eslint-plugin-import
    • eslint-plugin-react-hooks

6.0.0

  • Добавлено правило exhaustive-deps для react-hooks
  • Поднята версия зависимости eslint-plugin-react-hooks

5.0.2

  • Запрещены для использования относительные импорты в родительскую директорию (содержащие ..)
  • Поднята версия зависимости eslint-plugin-import для поддержки eslint 5.x
  • Добавлены правила для react hooks
  • Добавлена peerDependency на eslint >= 4.12.1

4.0.0

  • Запрещены для использования
    • curly всегда error
    • Reflect
    • Array.from в пользу spread
    • Proxy
    • WeakMap
    • WeakSet
    • typed arrays
    • Generators
  • В качестве парсера используется babel-eslint
  • В parserOptions включены модули и jsx
  • В no-unused-vars включен ignoreRestSiblings

3.0.0

  • Поправил конфиг для 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

2.0.0

  • Все правила переведены в error.
  • Отключены правила:
    • no-param-reassign — переназначем преимущественно для простановки значения по-умолчанию или корректировки входных данных, нет смысла запрещать.
    • guard-for-in — у нас практически нет наследуемых объектов, нет смысла добавлять в каждом месте hasOwnProperty ради линтинга.
  • Для правила no-plusplus разрешаем ++/-- в циклах.

1.6.0

  • Слили репы с es5 конфигом в одну

1.5.0

  • Прописали env свойство
  • Обновили airbnb и зависимости

1.4.0

  • Переводим no-plusplus в warn.
  • Переводим no-mixed-operators в warn, допускаем ввиду большого объема легаси.

1.3.0

  • Отключаем dot-notation для ключевых слов для совместимости со старыми браузерами.
  • Отключаем no-new, иногда нужно просто создать экземпляр класса для запуска его внутренней кухни.
  • В свойствах объектов всегда используем camelCase.

1.1.0

  • Оставляем только поддержку es6

1.0.0

  • Первичный релиз
  • Без поддержки es6