Налаштування CSS-препроцесорів для проекту сайту
Ви запускаєте новий проект, а через місяць стилі перетворюються на монстра: дублюючі імпорти, конфлікти класів, збірка гальмує на 10 секунд. Команда витрачає до 30% часу на розгрібання CSS-хаосу. Це знайома ситуація? Ми, команда з досвідом налаштування CSS-інфраструктури для 50+ проектів, підготували перевірений рецепт. Правильне налаштування CSS-препроцесора з першого дня економить години розробки. У цій статті — наша методологія, яка скорочує час на стилізацію на 20–40% і зменшує кількість багів на 70%.
Чому важливо налаштувати CSS-препроцесори з першого дня?
Без чіткої конфігурації ви отримуєте N+1 імпорт, роздуті бандли (зайві 50–100 КБ CSS), source maps, які не працюють, і лінтер, що пропускає очевидні помилки (наприклад, невикористані змінні). Ми гарантуємо: після нашого налаштування ваша команда пише стилі в 2 рази швидше, а збірка займає секунди. Наприклад, в одному проекті ми скоротили час повної перезбірки з 12 до 2 секунд за рахунок правильного кешування та scope hoisting. Це дало економію часу розробки до 50 годин на місяць, що при середній ставці 1500 грн/год становить близько 75 000 грн щомісячно.
Як обрати препроцесор: SCSS, LESS, PostCSS чи Tailwind?
| Критерій | SCSS | LESS | PostCSS | Tailwind |
|---|---|---|---|---|
| Синтаксис | CSS+ | CSS+ | CSS (нативний) | Утиліти |
| Міксини | Потужні | Є | Через плагіни | Немає |
| Функції | Розширені | Базові | Через плагіни | Немає |
| Продуктивність збірки | Добра | Добра | Відмінна | Відмінна |
| Екосистема | Велика | Середня | Величезна | Зростаюча |
| Нові проекти | Так | Legacy/AntD | Завжди | React/Vue |
Рекомендація: SCSS для класичних проектів, Tailwind для React/Vue, PostCSS як обов'язковий шар поверх будь-якого. Якщо сумніваєтеся — почніть з SCSS: він сумісний з будь-яким збірником і має найбільшу спільноту.
Як уникнути частої помилки з @import у SCSS?
Головна помилка новачків — використання @import замість @use. @import застарів, викликає deprecation warning і сповільнює компіляцію (в 1.5–2 рази). Завжди використовуйте @use та @forward. Приклад правильної конфігурації Vite:
// vite.config.ts + postcss.config.js (об'єднана конфігурація)
import { defineConfig } from 'vite';
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: `
@use "@styles/abstracts/variables" as v;
@use "@styles/abstracts/mixins" as m;
`,
api: 'modern-compiler',
},
},
modules: {
localsConvention: 'camelCase'
},
postcss: './postcss.config.js',
devSourcemap: true,
},
});
// postcss.config.js
const isProd = process.env.NODE_ENV === 'production';
module.exports = {
plugins: [
require('postcss-import'),
require('postcss-nested'),
require('autoprefixer'),
require('postcss-preset-env')({ stage: 2 }),
...(isProd ? [require('cssnano')({ preset: 'default' })] : []),
],
};
Реальний приклад: налаштування SCSS для React-додатку на Vite
Один із наших проектів — інтернет-магазин на React 18. Стилі спочатку були на чистому CSS з хаотичною структурою. Ми за 6 годин налаштували SCSS з CSS Modules, Stylelint та PostCSS. Результат: розмір CSS впав на 25%, кількість багів, пов'язаних зі стилями, скоротилася на 70%, а час рев'ю CSS-коду — вдвічі. Ключовий елемент — правильно налаштований Browserslist:
// .browserslistrc
[production]
> 0.5%
last 2 versions
not dead
[development]
last 1 chrome version
last 1 firefox version
Покрокова інструкція налаштування SCSS + PostCSS + Stylelint
- Встановіть залежності:
npm i -D sass postcss autoprefixer postcss-preset-env cssnano stylelint. - Створіть
vite.config.tsз налаштуваннями SCSS (additionalData, modules, postcss). - Налаштуйте
postcss.config.jsз плагінами. - Додайте
.stylelintrc.jsonз правилами для SCSS та порядком властивостей. - Визначте
.browserslistrcдля цільових браузерів. - Розгорніть файлову структуру 7-1.
- Протестуйте збірку: dev-режим з source maps та production з мініфікацією.
Що входить у роботу
- Конфігурація препроцесора (SCSS/LESS/PostCSS/Tailwind) з урахуванням вашого стеку.
- Налаштування CSS Modules та source maps.
- Stylelint з кастомними правилами та порядком властивостей.
- Browserslist для цільових браузерів.
- Готова файлова структура з розбивкою на partials.
- Коротка документація (README) та навчання команди (30 хв).
- Гарантія: якщо щось зламається в процесі розробки — виправимо безкоштовно протягом місяця.
Архітектура файлів: перевірена схема 7-1
src/styles/
abstracts/
_variables.scss
_functions.scss
_mixins.scss
_index.scss
base/
_reset.scss
_typography.scss
components/
layout/
themes/
vendors/
main.scss Часті помилки при налаштуванні
- Забувають вказати
additionalData— доводиться повторювати імпорти в кожному файлі. - Використовують
@importзамість@use— deprecation warning і повільна компіляція. - Не включають source maps — дебаг стилів перетворюється на пекло.
- Пропускають PostCSS — немає автопрефіксів та мініфікації.
- Занадто глибока вкладеність (більше 3 рівнів) — збільшує специфічність та розмір CSS.
Типові проблеми та їх рішення
| Проблема | Рішення |
|---|---|
| Роздутий CSS через дублювання | Використовувати CSS Modules + babel-plugin-react-css-modules |
| Повільна збірка під час розробки | Увімкнути devSourcemap: false для продакшну, налаштувати кеш |
| Конфлікти класів у глобальній області | Використовувати CSS Modules з короткими хешами в продакшні |
Терміни та вартість
Повне початкове налаштування CSS-інфраструктури (препроцесор + PostCSS + CSS Modules + Stylelint + Browserslist): 4–8 годин. Налаштування для існуючого проекту з міграцією: 1–2 дні. Вартість розраховується індивідуально — напишіть нам, і ми оцінимо ваш проект.
Ця робота окупається за перший місяць розробки: єдність коду, виключення типових помилок, прискорення збірки. Отримайте консультацію з вибору препроцесора для вашого проекту. Зв'яжіться з нами, щоб обговорити деталі. Замовте налаштування CSS-інфраструктури під ключ — і почніть писати стилі, а не боротися з ними.







