Отладка и оптимизация CSS: Минимизация с помощью CSSO

Отладка и оптимизация CSS: Минимизация с помощью CSSO

От автора: на пути к тому, чтобы стать мастером CSS, вам нужно знать, как отлаживать и оптимизировать CSS. Как вы диагностируете и устраняете проблемы с рендерингом? Как вы обеспечиваете, чтобы CSS не вызывал проблем с производительностью для конечных пользователей? И как вы обеспечиваете качество кода?

Знание того, какие инструменты использовать, поможет вам обеспечить, чтобы front-end работал оптимально. В этой статье мы рассмотрим минимизацию CSS.

Инструменты разработчика помогают найти и устранить проблемы с рендерингом, но как насчет эффективности? Размеры файлов у нас настолько малы, насколько это возможно? Для этого нам нужны инструменты для минимизации.

Минимизация в контексте CSS просто означает «удаление лишних символов». Рассмотрим, например, этот блок кода:

h1 { font: 16px / 1.5 'Helvetica Neue', arial, sans-serif; width: 80%; margin: 10px auto 0px;
}

Это 98 байт, включая разрывы строк и пробелы. Давайте рассмотрим другой пример:

h1{font:16px/1.5 'Helvetica Neue',arial,sans-serif;width:80%;margin:10px auto 0}

Теперь наш CSS составляет всего лишь 80 байт — сокращение на 18%. Меньше байт, конечно, означает более быстрое время загрузки и экономию на передаче данных для вас и ваших пользователей.

В этой статье мы рассмотрим CSS Optimizer или CSSO, средство минимизации, которое работает на Node.js. Чтобы установить CSSO, вам сначала нужно установить Node.js и npm. npm устанавливается как часть процесса установки Node.js, поэтому вам нужно будет установить только один пакет.

Использование CSSO позволяет работать из удобного интерфейса командной строки. Пользователи Linux и macOS могут использовать приложение Terminal (Приложения> Terminal.app для macOS). Если вы работаете под Windows, используйте командную строку. Перейдите в меню «Пуск» или «Windows» и введите cmd в поле поиска.

Установка CSSO

После установки Node.js и npm, вы можете установить CSSO. В командной строке введите:

npm install -g csso

Флаг -g устанавливает CSSO глобально, поэтому мы можем использовать его из командной строки. При завершении установки npm выведет в окно терминала сообщение.

Установка CSSO с помощью npm на macOS

Теперь мы готовы минимизировать наш CSS.

Минимизация с помощью CSSO

Чтобы минимизировать файлы CSS, запустите команду csso, передав имя файла в качестве аргумента:

csso style.css

Это запустит базовое сжатие. CSSO удаляет ненужные пробелы, лишние точки с запятой и комментарии из входного файла CSS.

После завершения CSSO выведет оптимизированный CSS в стандартном формате, что означает текущий терминал или окно командной строки. Однако в большинстве случаев мы хотим сохранить этот вывод в файле. Для этого передайте csso второй аргумент — имя минимизированного файла. Например, если бы мы хотели сохранить мини-версию style.css как style.min.css, мы использовали бы следующее:

csso style.css style.min.css

По умолчанию CSSO изменит части вашего CSS. Например, объединит объявления с дублируемыми селекторами и удалит некоторые переопределенные свойства. Рассмотрим следующий CSS:

body { margin: 20px 30px; padding: 100px; margin-left: 0px;
}
h1 { font: 200 36px / 1.5 sans-serif;
}
h1 { color: #ff6600;
}

В этом фрагменте margin-left переопределяет раннее объявление. Мы также повторили h1 как селектор для последовательных блоков объявления. После оптимизации и минимизации мы получим следующее:

body{padding:100px;margin:20px 30px 20px 0}h1{font:200 36px/1.5 sans-serif;color:#f60}

CSSO удалил ненужные пробелы, разрывы строк и точки с запятой и сократил #ff6600 до #f60. CSSO также объединил свойства margin и margin-left в одно объявление (margin: 20px 30px 20px 0) и свел отдельные блоки селектора h1 в один.

Если вы скептически относитесь к тому, как CSSO перепишет ваш CSS, вы можете отключить функции реструктуризации. Просто используйте флаги —restructure-off или -off. Например, запуск csso style.css style.min.css -off дает нам следующее:

body{margin:20px 30px;padding:100px;margin-left:0}h1{font:200 36px/1.5 sans-serif}h1{color:#f60}

Теперь наш CSS минимизирован, но не оптимизирован. Отключение реструктуризации приведет к тому, что файлы CSS не будут настолько малыми, какими они могут быть. Избегайте отключения реструктуризации, если у вас не возникает конкретных проблем.

Препроцессоры и постпроцессоры (такие как Sass, Less и PostCSS) предлагают минимизацию как часть своего набора инструментов. Однако использование CSSO может сэкономить дополнительные байты.

Автор: Tiffany Brown

Источник: https://www.sitepoint.com/

Редакция: Команда webformyself.