דביר נעמן

תמונת כותרת לפוסט: סקיל setup-pre-commit לקלוד קוד
סקילים לקלוד קוד

סקיל Pre-Commit

7 דקות קריאה דביר נעמן

setup-pre-commit הוא סקיל לקלוד קוד שמקים אוטומטית מנגנון בדיקות שרץ לפני כל קומיט. הוא מתקין Husky, מגדיר lint-staged שמריץ Prettier על הקבצים, ומוסיף בדיקות טייפ והרצת טסטים ל-hook. כך כל קוד שנכנס לריפו עובר אוטומטית פורמט, בדיקת טיפוסים וטסטים, ובעיות נתפסות עוד לפני שהן מגיעות ל-main. הסקיל מזהה את מנהל החבילות של הפרויקט ומתאים את עצמו אליו, ומדלג בחן על שלבים שאין להם סקריפט. בפרויקטי הפיתוח שאני מוביל, שער בדיקות לפני קומיט הוא הדרך הזולה ביותר לשמור על איכות קוד. במדריך תקבלו את שלבי ההקמה, ארבעה תרחישי שימוש, וצ'קליסט לעבודה נכונה.

תמונת כותרת לפוסט: סקיל setup-pre-commit לקלוד קוד

פקודת התקנה

מפתח: Matt Pocock
קטגוריה: אבטחה ו-DevOps
התקנות: מעל 73 אלף
רישיון: קוד פתוח
npx skills add mattpocock/skills@setup-pre-commit -g -y

ההתקנה מתבצעת דרך מנהל החבילות הרשמי של הסקילים בפקודה אחת. הסקיל הוא קובץ Markdown פתוח מהמאגר של מאט פוקוק. אפשר להוריד ולבדוק את הקוד דרך הכפתורים שבראש העמוד.

מה הסקיל כולל?

הסקיל מתעד הקמה מלאה של pre-commit hook: זיהוי מנהל החבילות, התקנת Husky ו-lint-staged, הגדרת Prettier, והוספת בדיקות טייפ וטסטים שרצים אוטומטית לפני קומיט.

התקנת Husky להרצת hook לפני קומיט
lint-staged שמריץ Prettier על הקבצים שב-staging
בדיקת טיפוסים אוטומטית לפני קומיט
הרצת טסטים אוטומטית לפני קומיט
זיהוי מנהל החבילות והתאמה אליו
דילוג חכם על שלבים שאין להם סקריפט בפרויקט

קוד הסקיל המלא

Markdown

מה זה setup-pre-commit ולמה הסקיל הזה שונה?

setup-pre-commit פותר בעיה מוכרת: קוד לא תקין שנכנס לריפו. בלי שער בדיקות, קל לעשות קומיט לקוד שלא עבר פורמט, ששובר טיפוסים, או שמכשיל טסטים, והבעיה מתגלה רק מאוחר יותר, אצל מישהו אחר או ב-CI. הסקיל מקים שער אוטומטי שתופס את זה ברגע הקומיט.

מה שמייחד אותו הוא שזו הקמה מלאה ומותאמת, לא רק עצה. הסקיל מזהה את מנהל החבילות של הפרויקט, מתקין Husky ו-lint-staged, מגדיר Prettier אם חסר, ובונה hook שמריץ פורמט, בדיקת טיפוסים וטסטים לפני כל קומיט. הוא מספיק חכם כדי לדלג בחן על שלבים שאין להם סקריפט מתאים, ולהודיע על כך, במקום לשבור את ה-hook. התוצאה היא שער בדיקות שעובד מהרגע הראשון.

ההבדל מורגש באיכות הריפו. במקום קוד לא עקבי שמצטבר, כל קומיט עובר סטנדרט. בשילוב עם סקיל diagnosing-bugs, פחות באגים בכלל מגיעים רחוק, כי הרבה מהם נתפסים כבר בשער הקומיט.

מה setup-pre-commit נותן לקלוד קוד?

הסקיל מוסיף לקלוד את היכולת להקים שער איכות אוטומטי, כך שכל קוד שנכנס לריפו עובר פורמט, בדיקת טיפוסים וטסטים ללא מאמץ ידני.

שער איכות אוטומטי

הסקיל מקים hook שרץ לפני כל קומיט ומריץ פורמט, בדיקת טיפוסים וטסטים. כך בעיות נתפסות ברגע הקומיט ולא מאוחר יותר, וכל קוד שנכנס לריפו עומד בסטנדרט, בלי שאף אחד צריך לזכור להריץ בדיקות ידנית.

זיהוי והתאמה לפרויקט

הסקיל מזהה את מנהל החבילות של הפרויקט, npm, pnpm, yarn או bun, ומתאים את הפקודות אליו. הוא גם מגדיר Prettier אם חסר. כך ההקמה עובדת נכון בכל פרויקט בלי התאמות ידניות.

דילוג חכם על מה שחסר

אם בפרויקט אין סקריפט לבדיקת טיפוסים או לטסטים, הסקיל מדלג עליו בחן ומודיע, במקום לבנות hook שבור שנכשל בכל קומיט. כך השער תמיד עובד, ומתאים בדיוק למה שקיים בפרויקט.

lint-staged יעיל

במקום להריץ פורמט על כל הקוד, הסקיל מגדיר lint-staged שמריץ Prettier רק על הקבצים שב-staging. כך הבדיקה מהירה, רצה רק על מה שהשתנה, ולא מעכבת את הקומיט שלא לצורך.

ארבע היכולות הופכות שמירה על איכות קוד מתלויה במשמעת אישית למובנית בתהליך. בעבודות שלי, שער בדיקות לפני קומיט מנע הצטברות של קוד לא עקבי ובאגים, וזה ביטוח זול במיוחד.

למי הסקיל הזה מתאים?

מובילי פיתוח וצוותים: זה הקהל המובהק. שער בדיקות אחיד מבטיח שכל מפתח מכניס קוד באותו סטנדרט. השילוב עם סקיל resolving-merge-conflicts שומר על ריפו נקי ומסודר.

מפתחי סולו: גם כשעובדים לבד, קל לשכוח להריץ פורמט או טסטים. הסקיל הופך את זה לאוטומטי, כך שהקוד נשאר נקי בלי לזכור.

פרויקטים עם כמה תורמים: כשאנשים שונים נוגעים בקוד, שער בדיקות מונע אי עקביות ומבטיח שכל תרומה עומדת בסטנדרט. זה מוריד עומס מסקירות הקוד.

צוותים שעובדים עם סוכני AI: כשסוכן מבצע קומיטים, שער בדיקות אוטומטי תופס בעיות לפני שהן נכנסות. גם בעבודות אוטומציה שלי, בדיקות אוטומטיות הן חלק ממערכת אמינה.

מפתחים מתחילים: השער מלמד הרגלים טובים, פורמט עקבי ובדיקות, מההתחלה, ומונע טעויות נפוצות שמגיעות לריפו.

מי שפחות יתאים: סקריפט חד-פעמי קטן בלי טסטים או טיפוסים לא זקוק לשער מלא. הסקיל מבריק דווקא בפרויקטים שאמורים לחיות ולהתפתח, שבהם איכות עקבית חשובה.

איך setup-pre-commit עזר לי בפרויקטים אמיתיים

01

קוד עקבי בלי משמעת ידנית

בפרויקט, קוד נכנס בפורמטים שונים כי לא כולם הריצו Prettier. הסקיל הקים lint-staged שמריץ פורמט אוטומטית בכל קומיט. מאותו רגע כל הקוד היה עקבי, בלי שאף אחד צריך לזכור, וזה הוריד רעש מסקירות הקוד.

formatprettierconsistency
02

שבירת טיפוסים נתפסה מוקדם

שגיאות טיפוסים היו מגיעות ל-CI ומעכבות. הוספת בדיקת טיפוסים ל-hook תפסה אותן ברגע הקומיט, אצל המפתח עצמו. הבעיות נפתרו מיד במקום במחזור ה-CI, וזה קיצר את לולאת המשוב משמעותית.

typecheckearlyquality
03

טסטים שרצו אוטומטית לפני קומיט

מפתחים שכחו להריץ טסטים, ולפעמים קומיט שבר משהו. הסקיל הוסיף הרצת טסטים ל-hook, כך שקוד ששובר טסט פשוט לא עובר קומיט. רשת הביטחון הזאת מנעה כניסה של רגרסיות לריפו.

testsautomationsafety
04

התאמה מהירה לפרויקט קיים

פרויקט השתמש ב-pnpm ולא היה לו סקריפט typecheck. הסקיל זיהה את מנהל החבילות, התאים את הפקודות, ודילג בחן על שלב בדיקת הטיפוסים תוך הודעה. ההקמה עבדה מהרגע הראשון בלי תיקונים ידניים.

package-manageradaptsetup

ארבעת המקרים מראים שהסקיל הופך שמירה על איכות קוד ממשימה שתלויה בזיכרון למובנית בתהליך. כשהבדיקות רצות אוטומטית לפני קומיט, הריפו נשאר נקי ועקבי, ובעיות נתפסות מוקדם ובזול.

סיכום

סקיל setup-pre-commit הוא כלי מצוין לכל פרויקט שאמור לחיות לאורך זמן. הוא מקים אוטומטית שער בדיקות לפני קומיט, עם פורמט, בדיקת טיפוסים וטסטים, מותאם למנהל החבילות של הפרויקט, כך שאיכות הקוד נשמרת בלי מאמץ ידני.

אם אתם מתחילים, בקשו מקלוד להקים pre-commit hook עם הסקיל. תוך דקות יהיה לכם שער שמריץ פורמט ובדיקות בכל קומיט. תרגישו את ההבדל באיכות ובעקביות של הריפו כבר מהקומיט הראשון.

בפוסטים הבאים אמשיך לסקור סקילים שמשדרגים את איכות הפיתוח. האתר של דביר נעמן מרכז את כל הכלים, השיטות והליווי שאני מציע לעסקים שרוצים לבנות תוכנה איכותית עם בינה מלאכותית.

שיתוף הסקיל

שאלות ותשובות

מה זה בעצם הסקיל setup-pre-commit?

זה סקיל לקלוד קוד שמקים אוטומטית מנגנון בדיקות שרץ לפני כל קומיט. הוא מתקין Husky, מגדיר lint-staged עם Prettier, ומוסיף בדיקת טיפוסים והרצת טסטים. כך כל קוד שנכנס לריפו עובר פורמט ובדיקות אוטומטית, ובעיות נתפסות עוד לפני שהן מגיעות לענף הראשי.

מה זה pre-commit hook?

זה סקריפט שרץ אוטומטית לפני שקומיט מתבצע בגיט, ויכול לחסום אותו אם משהו לא תקין. הסקיל משתמש בו כדי להריץ פורמט, בדיקת טיפוסים וטסטים. כך הבדיקות קורות ברגע הקומיט, אצל המפתח, ולא מאוחר יותר ב-CI או אצל מישהו אחר.

איך מתקינים את הסקיל בקלוד קוד?

בפקודה אחת דרך מנהל החבילות הרשמי של הסקילים, כפי שמופיע בקופסת ההתקנה למעלה. הסקיל הוא קובץ Markdown פתוח מהמאגר של מאט פוקוק. אחרי ההתקנה בקשו מקלוד להקים pre-commit hook, והוא יתקין ויגדיר את הכול בפרויקט.

האם הסקיל יעבוד עם מנהל החבילות שלי?

כן. הסקיל מזהה את מנהל החבילות לפי קובץ ה-lock, npm, pnpm, yarn או bun, ומתאים את הפקודות אליו. כך ההקמה עובדת נכון בכל פרויקט, בלי שתצטרכו להתאים ידנית. אם לא ברור, הוא נופל בחזרה ל-npm כברירת מחדל.

מה קורה אם אין לי סקריפט טסטים או טיפוסים?

הסקיל מטפל בזה בחוכמה. אם בפרויקט אין סקריפט לבדיקת טיפוסים או לטסטים, הוא מדלג עליו ומודיע לכם, במקום לבנות hook שייכשל בכל קומיט. כך השער תמיד עובד, ומורכב בדיוק מהשלבים שרלוונטיים לפרויקט שלכם.

האם זה לא יאט את הקומיטים שלי?

הסקיל מגדיר lint-staged, שמריץ את הפורמט רק על הקבצים שב-staging ולא על כל הקוד. כך הבדיקה מהירה ורצה רק על מה שהשתנה. בדיקות טיפוסים וטסטים אכן לוקחות זמן, אבל זה זמן שחוסך הרבה יותר בהמשך, כי בעיות נתפסות מיד.

האם אפשר לעקוף את ה-hook כשצריך?

כן. במקרים חריגים אפשר לעקוף hook עם דגל מתאים בפקודת הקומיט. עם זאת, הסקיל מקים את השער כדי שיעבוד כברירת מחדל, כי הערך שלו הוא דווקא בכך שהוא רץ תמיד. עקיפה כדאית רק במצבים מיוחדים ולא כהרגל קבוע.

האם הסקיל מתאים גם לפרויקטים קיימים?

בהחלט. הוא עובד מצוין על פרויקט קיים: מזהה את מנהל החבילות, מתקין את הכלים, ומקים את ה-hook בלי לשבור את מה שקיים. זו דרך מהירה להוסיף שער איכות לפרויקט שכבר רץ, ולשפר את העקביות שלו מכאן והלאה.

דביר נעמן

על הכותב

דביר נעמן – מומחה שיווק דיגיטלי, SEO ואוטומציות

מלווה עסקים בצמיחה דיגיטלית: קידום אורגני, קידום במנועי AI, אימייל מרקטינג, אוטומציות ופיתוח תוכנה. תוצאות מדידות ושקיפות מלאה.