Ответ вслух Middle Линтеры и форматирование обновлено

Как настроить линтинг и форматирование в проекте

Вопрос

Как бы ты настроил линтинг и форматирование в новом TypeScript-проекте?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Разделяю задачи: Prettier отвечает за вид кода, ESLint за ошибки. Чтобы они не спорили, последним в конфиг ESLint подключаю eslint-config-prettier.

Что должно прозвучать в ответе

  • Prettier для формата, ESLint для ошибок, eslint-config-prettier против конфликтов

  • Flat config: @eslint/js recommended + typescript-eslint, свои правила поверх

  • Редактор: форматирование при сохранении

  • husky + lint-staged на pre-commit по изменённым файлам

  • CI: eslint . --max-warnings 0 и prettier --check

  • .editorconfig для базовых настроек

Что могут спросить следом

  • Почему не взять только ESLint со стилистическими правилами?
  • Что бы ты сделал с правилом, которое команда постоянно отключает?

Разбор

Разделяю задачи: Prettier отвечает за вид кода, ESLint за ошибки. Чтобы они не спорили, последним в конфиг ESLint подключаю eslint-config-prettier.

ESLint настраиваю через flat config: рекомендованный набор @eslint/js, рекомендованные правила typescript-eslint, а для критичного кода типизированные правила вроде no-floating-promises. Поверх кладу несколько своих правил, о которых договорилась команда.

Дальше три уровня запуска. В редакторе форматирование при сохранении и подсветка ошибок. В pre-commit хуке через husky и lint-staged проверяются только изменённые файлы, чтобы коммит был быстрым. В CI полный прогон: eslint с max-warnings 0 и prettier --check. CI главный, потому что хук можно обойти.

Если команда постоянно отключает какое-то правило, это повод обсудить и выключить его в конфиге, а не плодить disable-комментарии.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.