Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Сборка для публикации и частые ошибки

Во время разработки CSS должен быть читаемым и иметь карты исходников. Для публикации — как можно меньше. Sass выдаёт и то и другое из одних исходников: флаг --style выбирает формат результата.

Сжатый вывод

По умолчанию Sass использует стиль expanded — читаемый CSS, который вы видели на протяжении курса. Стиль compressed убирает пробелы, переносы строк и последние точки с запятой:

// styles/main.scss
$primary: #2563eb;
 
.btn {
  color: white;
  background: $primary;
 
  &:hover {
    background: black;
  }
}
npx sass --style=compressed --no-source-map styles/main.scss css/main.css

Весь css/main.css превращается в одну строку:

.btn{color:#fff;background:#2563eb}.btn:hover{background:#000}

Sass ещё и сократил цвета: white стал #fff. Браузер читает этот файл так же, как развёрнутый.

Скрипты для обоих режимов

Добавьте обе команды в package.json:

{
  "scripts": {
    "dev": "sass --watch styles/main.scss css/main.css",
    "build": "sass --style=compressed --no-source-map styles/main.scss css/main.css"
  }
}

Работайте с npm run dev, а перед загрузкой сайта выполняйте npm run build. В проекте на Vite это не нужно: npm run build там уже компилирует и сжимает стили.

Нужна ли папка css/ в Git

Скомпилированный CSS всегда можно пересоздать из исходников, поэтому обычно папку css/ добавляют в .gitignore и собирают на сервере или в CI. Коммитьте её, только если хостинг не умеет запускать npm run build — например, простой статический хостинг без шага сборки.

Список частых ошибок

ОшибкаЧто происходитКак избежать
Подключить main.scss в HTMLСтили не применяютсяПодключайте скомпилированный .css
Править css/main.cssИзменения перезаписываютсяПравьте только styles/
Частичный файл без _Появляется лишний CSS-файлНачинайте имена частичных файлов с _
Нет @use в компонентеUndefined variableКаждый файл подключает то, что использует
Деление через /Предупреждение об устареванииmath.div()
@extend внутри @mediaОшибка компиляцииМиксин вместо него
Глубокая вложенностьДлинные хрупкие селекторыДо трёх уровней
Цикл «на всё»Тяжёлый CSS-файлГенерируйте только используемое
Функция Sass над var()Ошибка компиляцииВычисляйте до пользовательского свойства

Проверьте размер

После сборки посмотрите размер файла: ls -l css/main.css в macOS и Linux или свойства файла в Windows. Если CSS вдруг вырос после добавления миксина или цикла, загляните в развёрнутый результат и посмотрите, что сгенерировалось.

Частая ошибка

Публикация сборки для разработки. Развёрнутый CSS с картой исходников работает, но он больше, а файл .map позволяет любому прочитать ваши исходники Sass. Делайте npm run build последним шагом перед каждой загрузкой и проверяйте, что в публикуемой папке не осталось main.css.map.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.