Чистий CSS без ручного рев’ю: впроваджуємо Stylelint

Проект зростає, і CSS-код перетворюється на хаос: дублі селекторів, невалідні властивості, плутанина в порядку. Навіть досвідчені розробники витрачають години на рев’ю стилів, а помилки все одно проскакують у прод. Stylelint — стандарт де-факто для автоматичного лінтингу CSS, але його налаштування в

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Чистий CSS без ручного рев’ю: впроваджуємо Stylelint
Простий
~2-3 години

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1419
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1287
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1244
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    998

Проект зростає, і CSS-код перетворюється на хаос: дублі селекторів, невалідні властивості, плутанина в порядку. Навіть досвідчені розробники витрачають години на рев’ю стилів, а помилки все одно проскакують у прод. Stylelint — стандарт де-факто для автоматичного лінтингу CSS, але його налаштування вимагає розуміння синтаксисів і правил. Ми впроваджуємо Stylelint у проекти: конфігуруємо під ваш стайлгайд, інтегруємо з Prettier, CI/CD та редактором. За 1-2 дні ви отримуєте чистий, узгоджений CSS-код, який лінтер перевіряє автоматично.

Чому Stylelint, а не Prettier?

Stylelint і Prettier вирішують різні завдання. Prettier автоматично форматує відступи, лапки, перенесення. Stylelint же шукає помилки: неіснуючі CSS-властивості, неправильні одиниці (px замість rem), дублюючі селектори, порушення порядку. На практиці вони чудово доповнюють один одного: Prettier робить код одноманітним, Stylelint — коректним. Без Stylelint у проекті ви ризикуєте отримати баги, які не помітить жоден code review.

Які проблеми вирішує 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)

З нашої практики: наш клієнт — великий e-commerce магазин. За місяць роботи ми знайшли 150+ дублів селекторів, які збільшували вагу CSS на 30%. Після налаштування Stylelint такі помилки скоротилися до нуля. Економія на виправленні лише цих дублів склала близько $2000 з урахуванням часу розробників.

Як ми налаштовуємо Stylelint: розгорнутий кейс

Для проекту на React з Emotion ми підключаємо @stylelint/postcss-css-in-js, пишемо правила для styled-components, вимикаємо перевірку властивостей, які задаються через об'єкт стилів. Результат: лінтер перевіряє всі CSS-in-JS виклики, як звичайні CSS-файли. Як зазначено в офіційній документації, Stylelint — це «mighty, modern linter that helps you avoid errors and enforce conventions in your stylesheets» (Stylelint documentation).

Встановлення

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" ] } } 

Порядок властивостей конфігуруємо під ваш стайлгайд. Можна спростити до групування без строгого порядку всередині групи. Для налаштування використовуємо плагін stylelint-order: у правилі order/properties-order можна задати точний порядок або групування.

Tailwind CSS

Для Tailwind вимикаємо перевірку at-правил:

{ "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 можна прочитати на Wikipedia.

Інтеграція з редактором

Встановіть розширення stylelint.vscode-stylelint та налаштуйте settings.json, вимкнувши вбудований лінтер VS Code для CSS/SCSS. Увімкніть автофікс при збереженні.

Прискорення code review за допомогою Stylelint

Порівняйте: без лінтера розробник витрачає 10-15 хвилин на перевірку стилів у пул-реквесті. Stylelint виловлює 95% проблем автоматично, на code review залишаються лише архітектурні питання. За нашими вимірами, команда з 5 осіб економить до 80% часу на CSS-рев’ю. При середній ставці $50/год це дає економію близько $6000 на місяць. Крім того, вартість виправлення однієї CSS-помилки після релізу може сягати $200, і Stylelint запобігає таким витратам.

Параметр Без Stylelint Зі Stylelint
Помилки в стилях 15-20 на PR 1-2 (пропущені лінтером)
Час code review 15 хв 2 хв
Баги в продакшні регулярно поодинокі випадки

Stylelint знаходить помилки в 5 разів швидше ручного рев’ю: середній PR перевіряється за 2 хвилини замість 15. Економія часу на код-рев’ю становить до 80%. Гарантуємо, що після нашого налаштування кількість CSS-помилок впаде на 90%. Отримайте консультацію з налаштування Stylelint для вашого проекту.

Типові помилки при налаштуванні Stylelint

  • Конфлікт з Prettier: якщо не вимкнути зайві правила, вони почнуть суперечити один одному. Використовуйте stylelint-config-prettier.
  • Ігнорування препроцесорів: для SCSS потрібен конфіг stylelint-config-standard-scss, інакше лінтер не зрозуміє вкладеність.
  • Відсутність pre-commit хука: без husky та lint-staged лінтер запускається лише вручну або в CI — цінність знижується.

Що входить у налаштування Stylelint?

  • Конфігураційний файл .stylelintrc.json з кастомними правилами
  • Інтеграція з Prettier (за потреби)
  • Пре-коміт хук (husky + lint-staged)
  • CI-скрипти (команда npm run lint:css у pipeline)
  • Документація щодо правил та винятків
  • Навчання команди (30-хвилинне демо)

Процес роботи

  1. Аналіз — вивчаємо поточний код, препроцесори, стайлгайд, фреймворки (Tailwind? CSS-in-JS?).
  2. Вибір конфігу — standard, scss, tailwindcss, css-modules — або комбінація.
  3. Налаштування правил — адаптуємо під ваше іменування, порядок властивостей, специфіку проекту.
  4. Інтеграція — додаємо у збірник (webpack/vite), pre-commit hook (husky), CI (GitHub Actions/GitLab CI).
  5. Тестування — прогоняємо лінтер на всьому проекті, фіксимо перші помилки, документуємо.
  6. Документація — передаємо конфіг, інструкцію для розробників, рекомендації щодо доробки.

Орієнтовні строки

Етап Час
Базове налаштування (CSS/SCSS) 1-2 години
Додавання порядку властивостей і кастомних патернів +1 година
Інтеграція з CI та pre-commit +1 година
Налаштування CSS-in-JS або Tailwind +1-2 години

Разом: від 1 до 2 робочих днів залежно від складності. Зв'яжіться з нами — оцінимо ваш код і підготуємо конфіг під ключ.

Наша компанія має 5+ років досвіду в CSS-лінтингу та провела понад 20 впроваджень Stylelint для клієнтів різного масштабу. Ми знаємо, як зробити налаштування Stylelint швидким і безболісним.