Використовуйте Gulp та UnCSS, щоб зменшити вашу структуру CSS

Фреймворки CSS - це приємний спосіб розпочати роботу з проектом. Ви можете сказати за назвою багатьох популярних фреймворків: Bootstrap, Foundation та Skeleton, щоб назвати лише декілька. Всі ці імена викликають вихідну точку - проблема полягає в тому, що, якщо ви не витратите час, щоб усунути шматки, якими ви не користувались, ви доставите роздутий код своїм користувачам.

kitchens

Почніть з усього, доставляйте те, що вам потрібно

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

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

UnCSS на допомогу

Поширеним способом уникнути цієї проблеми є використання UnCSS, інструменту, який порівнює ваш HTML і CSS, видаляючи біти CSS, які він виявляє невикористаними. Він використовує PhantomJS під капотом для відтворення набору сторінок, включаючи JavaScript. Після відображення сторінки в пам'яті вона порівнює всі селектори на відтвореній сторінці з вихідними файлами CSS. Звідти він може генерувати новий файл CSS, який містить селектори, які ви насправді використовували, і нічого іншого!

Автоматизація UnCSS

UnCSS - це оснащення для використання. Ви надаєте йому список файлів CSS та список URL-адрес, які він повинен відтворити, а решту робить. Приклад завдання gulp-uncss у нашому навчальному наборі з роботи з інтерфейсом значно зменшує копію Bootstrap. Ви можете побачити це в контексті більшого файлу Gulp на GitHub, але ось саме завдання:

Кроки в завданні:

  1. Вкажіть вихідні ресурси Bootstrap (ми включили їх за допомогою npm, щоб вони знаходились у каталозі node_modules.)
  2. Вкажіть деякі URL-адреси, які слід використовувати як посилання на HTML. Ви можете вказати звичайні файли HTML, але в нашому випадку використовується локальний сайт Jekyll.
  3. Наш кінцевий пункт призначення - css/в корені нашого проекту. Вміст цього каталогу ігнорується git, оскільки все, що всередині, генерується Gulp.

Навіть якщо ви використовуєте зменшені копії як вихідну точку, економія є величезною:

Файл оригінальний UnCSS
bootstrap.min.css 115 тис 12 тис
bootstrap-theme.min.css 19 тис 7,3 тис

Отже, файли CSS зросли з 134 тис. До приблизно 19 тис без важкого підйому з нашого боку! Дай п'ять!

Примітка: наш зразок завдання навмисно виключає деякі необхідні сторінки із завдання UnCSS. Оскільки він розроблений для використання в практичному тренінгу, урок тут полягає в тому, що виключення сторінок, які використовують унікальні біти фреймворку, означає, що ваші результати UnCSS будуть неповними. Одна рекомендація уникати цієї проблеми - це використовуйте сторінку довідника стилів як свою URL-адресу, або інший посилальний HTML, який, як відомо, містить повну копію всієї можливої ​​розмітки на вашому сайті.

Завжди перевіряйте результати

Коментатор зазначив, що UnCSS може потенційно позбавити стилів, які з'являються лише після взаємодії користувача. Деякі приклади: hover,: focus та класи, які JS додає до DOM.

UnCSS оснащений опцією ігнорування, яка дозволяє вказати, які селектори повинні ні бути видаленим.

Коли я повторно протестував точний код у нашому навчальному наборі, я побачив, що всі: курси наведення залишаються за замовчуванням у файлах, що ідентифікуються UnCSS, без додаткової конфігурації. Однак якщо ви покладаєтесь на JavaScript для додавання або видалення класів, що використовуються вашим CSS, пам’ятайте про цю опцію.