Контекст работы
В проекте нашей команды действуют строгие правила линтинга, вплоть до сортировки импортов. Эти правила позволяют обеспечить единый стиль кода, но иногда возникают проблемы с линт-ошибками после создания PR и их проверки на CI.
Хотя это случалось нечасто, но всякий раз, когда возникала линт-ошибка, приходилось запускать скрипты для исправления ошибок на локальной машине, делать новый коммит и снова отправлять код. Это был неудобный и времязатратный процесс, увеличивающий время на код-ревью, поэтому я предложил команде добавить проверку линтинга в pre-push хук.
Получив согласие от коллег, мы добавили в существующий скрипт lint-fix:global следующий pre-push хук:
echo "🔍 Запуск линт фикса..."
pnpm run lint-fix:global
# Проверить наличие изменений
if ! git diff --quiet; then
echo "❌ Линтинг исправил несколько файлов. Пожалуйста, закоммитьте изменения перед отправкой."
exit 1
fi
На следующий день я получил отзыв о проблеме. Возможно, кто-то из вас уже заметил её в коде выше.

Если пытаться отправить файлы в staged-статусе, независимо от выполнения lint-fix:global, отправка завершится сбоем. 🤦
Мы решили, что вместо выполнения lint fix правильнее будет просто проверять наличие ошибок линтинга, и изменили код следующим образом:
echo "🔍 Запуск lint..."
if ! pnpm run lint -- --quiet; then
echo "❌ Обнаружены ошибки линтинга."
echo "👉 Чтобы исправить ошибки автоматически: pnpm run lint-fix:global"
exit 1
fi
Этот lint скрипт, фактически, выполняет команду next lint. Мы добавили опцию --quiet, чтобы отображать только ошибки, и если они обнаружены, вывести сообщение и предотвратить отправку.
А раз уж делали изменения, мы решили сделать сообщение об ошибке более дружелюбным для других членов команды.
Надеюсь, теперь мы сможем избежать потери времени из-за ошибок линтинга в CI. 🙏