הגדרת lint-staged לבדיקות קוד מהירות לפני commit

כאשר כל commit הופך להמתנה ארוכה בגלל שה-linter בודק את כל קבצי הפרויקט, מפתחים מתחילים לעקוף את הבדיקות. אנחנו מגדירים lint-staged כך ש-pre-commit hooks בודקים רק את הקבצים שהשתנו, ומחזירים את המהירות והאמון בתהליך. הצוות שלנו מיישם זאת במפתח מלא—מההגדרה ועד התמיכה, ומבטיח בדיקות קוד מהירות ואמינות ללא פספוס מועדים.

פיתוח ותחזוקה של כל סוגי האתרים:

אתרי מידע או יישומי אינטרנט
אתרי תדמית, דפי נחיתה, אתרי חברה, קטלוגים מקוונים, חידונים, אתרי קידום, בלוגים, מקורות חדשות, פורטלי מידע, פורומים, אגרגטורים
אתרי מסחר אלקטרוני או יישומי אינטרנט
חנויות מקוונות, פורטלי B2B, שווקים, בורסות מקוונות, אתרי קאשבק, בורסות, פלטפורמות דרופשיפינג, מנתחי מוצרים
יישומי אינטרנט לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, פורטלים ארגוניים, מערכות ניהול ייצור, מנתחי מידע
אתרי שירות אלקטרוני או יישומי אינטרנט
פלטפורמות מודעות, בתי ספר מקוונים, בתי קולנוע מקוונים, בוני אתרים, פורטלים לשירותים אלקטרוניים, פלטפורמות אירוח וידאו, פורטלים נושאיים

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 2062 השירותים
הגדרת lint-staged לבדיקות קוד מהירות לפני commit
פשוט
~2-3 שעות

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113
  • פיתוח אתר עבור SBH Partners
    פיתוח אתר עבור SBH Partners
    1201
  • פיתוח אתר עבור Red Pear
    פיתוח אתר עבור Red Pear
    619

האצת בדיקות Pre-commit פי 10

הגדרת lint-staged לבדיקות קוד מהירות לפני commit היא בקשה נפוצה מצד צוותים המשתמשים ב-React 18 עם TypeScript, כאשר כל commit מפעיל את ESLint על כל 500+ הקבצים ולוקח 30 שניות של המתנה. מפתחים מתחילים להשתמש ב-git commit --no-verify כדי להימנע מההמתנה. איכות הקוד יורדת, באגים מחליקים לייצור. הפתרון הוא lint-staged. הוא מריץ לינטרים ופורמטרים רק על קבצים שנמצאים באזור ה-staging. הצוות שלנו מגדיר pipelines כאלה תוך 30–60 דקות, ובדיקת שלושה קבצים שהשתנו לוקחת פחות משנייה. זה מאיץ את בדיקות ה-pre-commit פי 10–30, והצוות מתחיל לסמוך שוב על ה-hooks. זה חוסך עד 20 שעות בחודש בהמתנה ללינטרים — בעצם מחזיר יום עבודה אחד לצוות. בתעריף ממוצע של $50 לשעה למפתח, זה חיסכון של $1,000 עד $5,000 בחודש לצוות של 5 אנשים.

התיעוד של lint-staged ממליץ: "הרץ לינטרים על קבצי git staged ואל תיתן ל💩 להחליק לתוך בסיס הקוד שלך!"

למה lint-staged עובד מהר יותר

גישה זמן לכל commit (500 קבצים) קבצים שנבדקו הסתברות לעקיפה
סקריפט רגיל (כל הקבצים) ~30 שניות הכל גבוהה (--no-verify)
lint-staged (רק staged) <1 שנייה רק קבצים שהשתנו נמוכה
פורמט ידני לא רלוונטי לא רלוונטי גבוהה מאוד

איך אנחנו מגדירים lint-staged

אנחנו משתמשים ב-lint-staged 15.x, Husky 9.x, ESLint 9.x, Prettier 3.x. התצורה נשמרת ב-lint-staged.config.mjs — זה יותר נוח מ-package.json ומאפשר פונקציות דינמיות. מקרה טיפוסי: פרויקט React 18 + TypeScript. החלק הלא מובן מאליו היחיד הוא typecheck.

הגדרת typecheck בתוך lint-staged

התקנה:

npm install --save-dev lint-staged 

בדרך כלל יחד עם Husky. npm install --save-dev lint-staged :

npx lint-staged 

תצורה:

export default {
  '**/*.{ts,tsx,js,jsx}': [
    'eslint --fix --max-warnings 0',
    'prettier --write',
  ],
  '**/*.{css,scss}': [
    'stylelint --fix',
    'prettier --write',
  ],
  '**/*.{json,md,yml,yaml}': [
    'prettier --write',
  ],
  '**/*.{ts,tsx}': [
    'eslint --fix',
    'prettier --write',
    () => 'node scripts/typecheck-staged.mjs',
  ],
};
דוגמה לפונקציית wrapper ל-typecheck
// scripts/typecheck-staged.mjs
import { execSync } from 'node:child_process';
try {
  execSync('tsc --noEmit --incremental', { stdio: 'inherit' });
} catch {
  process.exit(1);
}

ניפוי באגים

# Посмотреть, что будет запущено без реального запуска npx lint-staged --debug --dry-run 

מה כלול בהתקנה

אנחנו מתעדים את רצף העבודה בבריף ושומרים אותו במאגר ה-Git של הלקוח:

  1. ביקורת על ה-pipeline הנוכחי: מדידת זמן pre-commit, זיהוי צווארי בקבוק וספירת תדירות .husky/pre-commit.
  2. בחירת כלים למחסנית הטכנולוגית: ESLint, Prettier, Stylelint, tsc, בדיקות סודות מותאמות אישית.
  3. פיתוח תצורת lint-staged ו-Husky: globs ספציפיים, סדר פקודות, טיפול בשגיאות.
  4. שילוב wrapper ל-typecheck ובדיקת עשן ב-CI: ה-pipeline נכשל אם ה-hook לא רץ.
  5. העברת ידע לצוות: סדנה של 30 דקות ו-changelog של 5–7 עמודים ב-Confluence.
שלב תיאור
ניתוח התהליך הנוכחי לימוד הפרויקט, המחסנית וה-pipeline שלך
התקנה ותצורה הגדרת lint-staged, Husky, ESLint, Prettier, Stylelint
שילוב typecheck כתיבת פונקציית wrapper ל-tsc
בדיקות מותאמות אישית גודל קבצים, סודות וכו'
תיעוד והדרכה תיאור התהליך לצוות
תמיכה לאחר היישום השבועות הראשונים, התאמות לפי בקשה

ציר זמן ותקציב

הערכת הפרויקט לוקחת יום עבודה אחד. ההתקנה בפועל אורכת 2 עד 5 ימים בהתאם למורכבות. העלות מחושבת באופן אישי לפי מספר הכלים, הצורך בבדיקות מותאמות אישית ושילוב CI/CD. צור קשר להערכה מפורטת.

למה לבחור בנו

אנחנו מבטיחים איכות: למעלה מ-10 שנות ניסיון ו-100+ פריסות של pipelines לאיכות קוד. אנחנו לא רק מגדירים כלים; אנחנו משלבים אותם ב-CI/CD שלך, תוך התחשבות במאפייני התשתית. המהנדסים שלנו יודעים איך lint-staged מתקשר עם hooks ו-pipelines אחרים. הזמינו הגדרת lint-staged מהצוות שלנו — האצו את בדיקות ה-pre-commit פי 10 והחזירו זמן פיתוח אמיתי לצוות שלכם.

אנחנו שמים דגש מיוחד על תצורות monorepo: Nx, Turborepo ו-Yarn Workspaces דורשות הרכבה זהירה של תצורה — אחרת לינטרים משכפלים עבודה ו-typecheck נכשל בלולאות. בפרויקטים כאלה, אנחנו מפצלים חוקים לפי חבילה: קוד ספרייה נבדק דרך npx lint-staged , יישומים דרך tsc legacy עם export default { '**/*.{ts,tsx,js,jsx}': [ 'eslint --fix --max-warnings 0', 'prettier --write', ], '**/*.{css,scss}': [ 'stylelint --fix', 'prettier --write', ], '**/*.{json,md,yml,yaml}': [ 'prettier --write', ], '**/*.{ts,tsx}': [ 'eslint --fix', 'prettier --write', () => 'node scripts/typecheck-staged.mjs', ], }; . בנוסף, אנחנו מאפשרים ESLint אינקרמנטלי ו-caches של Prettier דרך אפשרות // scripts/typecheck-staged.mjs import { execSync } from 'node:child_process'; try { execSync('tsc --noEmit --incremental', { stdio: 'inherit' }); } catch { process.exit(1); } , מה שמפחית את הזמן ב-40–60% ב-commits חוזרים. לצוותים עם 20+ מפתחים, אנחנו מוסיפים skip-worktree לקבצי תצורה כך שהגדרות IDE מקומיות לא ידלפו ל-PRs.

לאחר הפריסה, אנחנו מבצעים שתי מדידות רטרוספקטיביות — אחרי שבוע ואחרי חודש. הראשונה מראה באיזו תדירות מפתחים התרחקו מ-# Посмотреть, что будет запущено без реального запуска npx lint-staged --debug --dry-run (בדרך כלל מ-45% ל-3–5%), השנייה מראה זמן אמיתי שנחסך: 12–20 שעות לצוות בחודש. כל המדדים מתועדים בלוח מחוונים של Grafana אם כבר פרוס, או בגיליון Google של 25–30 שורות. צור קשר להערכת פרויקט חינמית — בדרך כלל תשובה ראשונה תוך 4 שעות עסקים.