Как настроить линтинг и форматирование в проекте
Вопрос
Как бы ты настроил линтинг и форматирование в новом TypeScript-проекте?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.