Как устроена автоматизация и используются ли линтеры
Что проверяют
Насколько вы включены в инженерную культуру проекта: знаете ли, что происходит с кодом между git push и продом, и можете ли настроить это сами. Следом часто спрашивают, как вы разводите ESLint и Prettier и что делать, если проверки тормозят CI.
Как отвечать
Рассказывайте про свой текущий проект по уровням, от редактора до деплоя:
- редактор: ESLint и форматтер работают при сохранении, ошибки видны до коммита;
- ESLint: ищет ошибки и опасные паттерны. Актуальный формат конфигурации это flat config в
eslint.config.js, старый.eslintrcустарел. Для TypeScript подключаетсяtypescript-eslint, для Reacteslint-plugin-react-hooks, который ловит нарушения правил хуков и неполные зависимости; - Prettier: форматирование, а не линтинг. Конфликтующие стилистические правила ESLint выключаются через
eslint-config-prettier. Альтернатива обоим: Biome, линтер и форматтер в одном быстром инструменте; - Stylelint: то же самое для CSS и SCSS;
- проверка типов:
tsc --noEmitотдельным шагом, потому что Vite и другие сборщики типы не проверяют; - pre-commit: Husky и lint-staged гоняют линтер только по изменённым файлам, чтобы коммит не ждал минуту;
- CI: на каждый pull request
npm ci, линт, типы, юнит-тесты на Vitest или Jest, сборка, при необходимости e2e на Playwright. Красный пайплайн блокирует merge.
Хорошо добавить, что меняли вы сами: ввели правило, ускорили пайплайн кешем зависимостей, перевели проект на flat config. Если автоматизации на проекте почти не было, так и скажите и опишите, что настроили бы первым. Этот же вопрос полезно задать работодателю: ответ многое говорит о зрелости команды.
Где спотыкаются
Называют Prettier линтером и не могут объяснить, почему ESLint и Prettier спорят из-за точек с запятой.
Полагаются только на pre-commit хуки. Их обходят через git commit --no-verify, настоящий барьер это обязательная проверка в CI.
Глушат правила через eslint-disable вместо того, чтобы разобраться. Отключения без комментария с причиной быстро превращают линтер в декорацию.