ההקשר של העבודה
בפרויקט שלנו, אנו מיישמים כלל lint חזק המחייב סידור יבוא ( import ) מסוים. למרות שזה מועיל לאחידות הסגנון בקוד, לעיתים מתעוררת שגיאת lint ב-PR שנוצר כתוצאה מכך ב-CI.
אפילו כשזה לא קורה הרבה, כשיש שגיאת lint, יש צורך להריץ סקריפט לתיקון השגיאה מקומית, לבצע commit מחדש ולדחוף את הקוד שוב. זו הייתה עבודה מתישה וגורם משמעותי להארכת זמן בקרת הקוד, לכן הצעתי להוסיף בדיקת lint ב-pre-push hook.
בעזרת הסכמת חברי הצוות, השתמשנו בסקריפט lint-fix:global
הקיים ויצרנו את ה-pre-push hook הבא:
echo "🔍 Running lint fix..."
pnpm run lint-fix:global
# בדיקה אם יש שינויים
if ! git diff --quiet; then
echo "❌ Linting fixed some files. Please commit the changes before pushing."
exit 1
fi
אבל ביום למחרת קיבלנו את המשוב הבא. חלקכם אולי כבר מזהים את הבעיה בקוד הנ״ל.

נמצא שדחיפה נכשלת כשמשאירים קבצים מסוימים במצב staged גם ללא קשר להפעלת lint-fix:global
. 🤦
הגענו למסקנה שנכון לעשות בדיקת שגיאות lint בלבד ולא תיקון אוטומטי. לכן ערכנו את הקוד כך:
echo "🔍 Running lint..."
if ! pnpm run lint -- --quiet; then
echo "❌ התגלתה שגיאת lint."
echo "👉 לתיקונה באופן אוטומטי: pnpm run lint-fix:global"
exit 1
fi
בקטע הקוד הזה, הסקריפט lint
למעשה מבצע את next lint
. הוספנו את האפשרות --quiet
כך שיתקבלו רק שגיאות, ואם מופיעות שגיאות, נופיע הודעת שגיאה ונחסום את הדחיפה. יתרה מכך, למען חברי הצוות, שיפרנו את הודעות השגיאה להיות ידידותיות יותר.
אנו מקווים שעכשיו לא ייבזבז זמן יקר על שגיאות lint ב-CI. 🙏