הפרויקט שלך גדל, וקוד ה-CSS הופך לכאוס: סלקטורים כפולים, מאפיינים לא תקינים, סדר לא מסודר. אפילו מפתחים מנוסים מבזבזים שעות על בדיקת קוד, ובכל זאת שגיאות עדיין מחליקות לייצור. Stylelint הוא התקן דה-פקטו לבדיקת CSS אוטומטית, אך ההגדרה דורשת הבנה של תחביר וכללים. אנו מיישמים Stylelint בפרויקטים: מגדירים אותו לפי מדריך הסגנון שלך, משתלבים עם Prettier, CI/CD ועורך. תוך 1-2 ימים מקבלים קוד CSS נקי ועקבי שהלינטר בודק אוטומטית.
למה Stylelint במקום Prettier?
Stylelint ו-Prettier פותרים בעיות שונות. Prettier מעצב אוטומטית הזחות, מרכאות, מעברי שורה. Stylelint מוצא שגיאות: מאפייני CSS שאינם קיימים, יחידות לא נכונות (px במקום rem), סלקטורים כפולים, הפרות סדר. בפועל, הם משלימים זה את זה: Prettier הופך את הקוד לאחיד, Stylelint הופך אותו לנכון. ללא Stylelint, הפרויקט שלך נמצא בסיכון לבאגים ששום בדיקת קוד לא תתפוס.
אילו בעיות Stylelint פותר?
שגיאות אמיתיות ש-Stylelint תופס אוטומטית:
-
color-no-invalid-hex— צבעי hex לא תקינים (#abcde) -
unit-no-unknown— יחידות לא ידועות (20pxx) -
property-no-unknown— מאפיינים שאינם קיימים (dispay: flex) -
declaration-block-no-duplicate-properties— מאפיינים כפולים בבלוק אחד -
no-duplicate-selectors— סלקטורים זהים במקומות שונים -
selector-class-pattern— הפרות מוסכמות שמות (BEM, kebab-case)
מהניסיון שלנו: עבור לקוח מסחר אלקטרוני גדול במשך חודש, מצאנו 150+ סלקטורים כפולים שהגדילו את משקל ה-CSS ב-30%. לאחר הגדרת Stylelint, שגיאות כאלה ירדו לאפס. החיסכון בתיקון הכפילויות בלבד היה כ-$2000 בהתחשב בזמן המפתחים.
איך אנו מגדירים Stylelint: מקרה מפורט
עבור פרויקט React המשתמש ב-Emotion, אנו מוסיפים @stylelint/postcss-css-in-js, כותבים כללים ל-styled-components, ומבטלים בדיקות למאפיינים שנקבעו דרך אובייקט styles. התוצאה: הלינטר בודק את כל קריאות ה-CSS-in-JS כמו קבצי CSS רגילים. כפי שנאמר בתיעוד הרשמי, Stylelint הוא "לינטר מודרני ועוצמתי שעוזר לך להימנע משגיאות ולאכוף מוסכמות בגיליונות הסגנון שלך" (תיעוד Stylelint).
התקנה
npm install --save-dev stylelint stylelint-config-standard stylelint-config-standard-scss stylelint-order
npm install --save-dev @stylelint/postcss-css-in-js postcss-syntax דוגמת הגדרה ל-SCSS עם סדר מאפיינים
{
"extends": [
"stylelint-config-standard",
"stylelint-config-standard-scss"
],
"plugins": ["stylelint-order"],
"rules": {
"color-named": "never",
"color-no-invalid-hex": true,
"unit-no-unknown": true,
"property-no-unknown": true,
"declaration-block-no-duplicate-properties": true,
"no-duplicate-selectors": true,
"selector-class-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$",
"order/properties-order": [
"content",
"position",
"top",
"right",
"bottom",
"left",
"z-index",
"display",
"flex",
"flex-direction",
"flex-wrap",
"align-items",
"justify-content",
"grid",
"grid-template",
"width",
"min-width",
"max-width",
"height",
"min-height",
"max-height",
"margin",
"margin-top",
"margin-right",
"margin-bottom",
"margin-left",
"padding",
"padding-top",
"padding-right",
"padding-bottom",
"padding-left",
"border",
"border-radius",
"background",
"background-color",
"color",
"font",
"font-size",
"font-weight",
"line-height",
"transition",
"animation",
"cursor",
"pointer-events",
"opacity",
"overflow",
"visibility"
]
}
}אנו מגדירים סדר מאפיינים שיתאים למדריך הסגנון שלך. ניתן לפשט לקבוצות ללא סדר קפדני בתוך הקבוצות. להגדרה אנו משתמשים בתוסף npm install --save-dev stylelint stylelint-config-standard stylelint-config-standard-scss stylelint-order npm install --save-dev @stylelint/postcss-css-in-js postcss-syntax : בכלל { "extends": [ "stylelint-config-standard", "stylelint-config-standard-scss" ], "plugins": ["stylelint-order"], "rules": { "color-named": "never", "color-no-invalid-hex": true, "unit-no-unknown": true, "property-no-unknown": true, "declaration-block-no-duplicate-properties": true, "no-duplicate-selectors": true, "selector-class-pattern": "^[a-z][a-z0-9]*(-[a-z0-9]+)*$", "order/properties-order": [ "content", "position", "top", "right", "bottom", "left", "z-index", "display", "flex", "flex-direction", "flex-wrap", "align-items", "justify-content", "grid", "grid-template", "width", "min-width", "max-width", "height", "min-height", "max-height", "margin", "margin-top", "margin-right", "margin-bottom", "margin-left", "padding", "padding-top", "padding-right", "padding-bottom", "padding-left", "border", "border-radius", "background", "background-color", "color", "font", "font-size", "font-weight", "line-height", "transition", "animation", "cursor", "pointer-events", "opacity", "overflow", "visibility" ] } } ניתן להגדיר סדר מדויק או קיבוץ.
Tailwind CSS
עבור Tailwind אנו מבטלים בדיקות לכללי at-rules:
{
"extends": ["stylelint-config-standard", "stylelint-config-tailwindcss"],
"rules": {
"at-rule-no-unknown": [
true,
{
"ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen", "layer"]
}
]
}
} CSS-in-JS (styled-components, emotion)
{
"overrides": [
{
"files": ["**/*.{js,jsx,ts,tsx}"],
"customSyntax": "@stylelint/postcss-css-in-js",
"rules": {
"color-named": "never",
"property-no-unknown": true
}
}
]
}ניתן לקרוא עוד על CSS-in-JS בוויקיפדיה.
שילוב בעורך
התקן את התוסף stylelint-order והגדר את settings.json, תוך ביטול הלינטר המובנה של VS Code עבור CSS/SCSS. אפשר תיקון אוטומטי בשמירה.
איך Stylelint מאיץ את בדיקת הקוד?
השוואה: ללא לינטר, מפתח מבזבז 10-15 דקות בבדיקת סגנונות ב-pull request. Stylelint תופס 95% מהבעיות אוטומטית; רק שאלות ארכיטקטוניות נשארות לבדיקת הקוד. לפי המדידות שלנו, צוות של 5 חוסך עד 80% מהזמן בבדיקות CSS. עם תעריף ממוצע של $50 לשעה, זה חוסך כ-$6000 בחודש. יתרה מכך, עלות תיקון שגיאת CSS אחת לאחר שחרור יכולה להגיע ל-$200, ו-Stylelint מונע עלויות כאלה.
| פרמטר | ללא Stylelint | עם Stylelint |
|---|---|---|
| שגיאות בסגנונות | 15-20 לכל PR | 1-2 (שהלינטר פספס) |
| זמן בדיקת קוד | 15 דקות | 2 דקות |
| באגים בייצור | באופן קבוע | מקרים בודדים |
Stylelint מוצא שגיאות פי 5 מהר יותר מבדיקה ידנית: PR ממוצע נבדק ב-2 דקות במקום 15. חיסכון בזמן בדיקת קוד עד 80%. אנו מבטיחים שאחרי ההגדרה שלנו, מספר שגיאות ה-CSS ירד ב-90%. קבלו ייעוץ להגדרת Stylelint לפרויקט שלכם.
טעויות נפוצות בהגדרת Stylelint
- קונפליקט עם Prettier: אם לא מבטלים כללים מיותרים, הם מתחילים לסתור זה את זה. השתמשו ב-
order/properties-order. - התעלמות מפרה-מעבדים: עבור SCSS צריך את התצורה
{ "extends": ["stylelint-config-standard", "stylelint-config-tailwindcss"], "rules": { "at-rule-no-unknown": [true, { "ignoreAtRules": ["tailwind", "apply", "variants", "responsive", "screen", "layer"] }] } }, אחרת הלינטר לא יבין קינון. - חוסר ב-pre-commit hook: ללא husky ו-lint-staged, הלינטר רץ רק ידנית או ב-CI—הערך יורד.
מה כלול בהגדרת Stylelint?
- קובץ תצורה
{ "overrides": [ { "files": ["**/*.{js,jsx,ts,tsx}"], "customSyntax": "@stylelint/postcss-css-in-js", "rules": { "color-named": "never", "property-no-unknown": true } } ] }עם כללים מותאמים - שילוב עם Prettier (אם נדרש)
- Pre-commit hook (husky + lint-staged)
- סקריפטים ל-CI (פקודה
stylelint.vscode-stylelintב-pipeline) - תיעוד כללים וחריגים
- הדרכת צוות (הדגמה של 30 דקות)
תהליך
- ניתוח — לימוד הקוד הנוכחי, פרה-מעבדים, מדריך סגנון, מסגרות (Tailwind? CSS-in-JS?).
- בחירת תצורה — סטנדרטית, scss, tailwindcss, css-modules — או שילוב.
- הגדרת כללים — התאמה למוסכמות השמות שלך, סדר מאפיינים, מאפייני פרויקט.
- שילוב — הוספה ל-bundler (webpack/vite), pre-commit hook (husky), CI (GitHub Actions/GitLab CI).
- בדיקה — הרצת לינטר על כל הפרויקט, תיקון שגיאות ראשוניות, תיעוד.
- תיעוד — מסירת תצורה, הוראות למפתחים, המלצות לשיפור.
לוחות זמנים משוערים
| שלב | זמן |
|---|---|
| הגדרה בסיסית (CSS/SCSS) | 1-2 שעות |
| הוספת סדר מאפיינים ותבניות מותאמות | +1 שעה |
| שילוב עם CI ו-pre-commit | +1 שעה |
| הגדרה ל-CSS-in-JS או Tailwind | +1-2 שעות |
סה"כ: מיום עבודה אחד עד יומיים תלוי במורכבות. צרו קשר—נעריך את הקוד שלכם ונכין תצורה מוכנה.







