Как избавиться от неиспользуемых стилей?
Чистим CSS код с помощью PurgeCSS
  
  PurgeCSS позволяет уменьшить CSS код проекта на 60% и это не предел
Довольно долго я искал инструмент, который мог бы избавить мой CSS код от неиспользуемых стилей.
Зачем он мне понадобился? Наверное, потому что подавляющее большинство разработчиков (в том числе и я) пользуются различными CSS фреймворками и библиотеками, позволяющими без лишних трудозатрат создавать элементы интерфейсов, что, в свою очередь, неизбежно приводит к значительному увеличению размеров CSS файлов.
Возникает вопрос: какое количество стилей, импортируемых из внешних ресурсов, действительно используются в проекте? Порой менее 20%. Зачем в таком случае необходимо сохранять невостребованные стили? Для этого нет никакой причины.
Purgecss
И вот на помощь пришел Purgecss. Инструмент, удаляющий неиспользуемый CSS. PurgeCSS может являться частью среды разработки.
Как же он работает? Разберемся с этим вопросом. Итак, нам нужны:
- CSS файл, который мы хотим оптимизировать
 - файл, с помощью которого осуществляется проверка
 - путь, по которому сохранится, новый сгенерированный файл.
 
Например, начальный CSS файл [1] проверяется с помощью HTML файла [2], на выходе создается CSS файл [3], содержащий только те стили, которые действительно используются в HTML файле [2].
Я уверен, что Ваш эксперимент с этим инструментом позволит уменьшить размер CSS более чем на 60%.
Инструменты сборки
Хорошая новость: PurgeCSS взаимодействует с различными популярными инструментами сборки:
- CLI
 - JavaScript API
 - Webpack
 - Gulp
 - Rollup
 
JS фреймворки
PurgeCSS можно использовать с современными JavaScript фреймворками, такими как:
- React
 - Vue
 - Next
 - Nuxt
 
Как работать с PurgeCSS
Рассмотрим варианты интеграции PurgeCSS с Gulp и Nuxt.js. Остальные методы интеграции можно освоить, изучив официальную документацию.
PurgeCSS и Gulp
Для начала необходимо установить пакет PurgeCSS с помощью npm или yarn
npm i -D gulp-purgecss
или
yarn add gulp-purgecss
Затем импортируйте добавленный пакет в своем gulpfile.js:
const gulp = require('gulp'),
   purgecss = require('gulp-purgecss');
Потом создайте задачу подобную этой:
gulp.task('purgecss', () => {
  return gulp
    .src('src/**/*.css')
    .pipe( 
      purgecss({
        content: ['src/**/*.html']
      })
    )
    .pipe(gulp.dest('build/'))
})
PS: не забудьте запустить эту задачу после того, как создадите HTML файлы, в противном случае Вы можете получить ошибку.
PurgeCSS и Nuxt.js
Для начала установите необходимые пакеты с помощью npm или yarn.
npm i --save-dev glob-all purgecss-webpack-plugin
или
yarn add glob-all purgecss-webpack-plugin
Импортируйте установленные пакеты в файле nuxt.config.js:
import PurgecssPlugin from 'purgecss-webpack-plugin'
import glob from 'glob-all'
import path from 'path'
Добавьте в сборку:
build: {
  extractCSS: true,
  extend(config, { isDev, isClient }) {
    if (!isDev && isClient) {
      config.plugins.push(
        new PurgecssPlugin({
          paths: glob.sync([
            path.join(__dirname, './pages/**/*.vue'),
            path.join(__dirname, './layouts/**/*.vue'),
            path.join(__dirname, './components/**/*.vue')
          ]),
          whitelist: ['html', 'body']
        })
      )
    }
  }
}
И это все!
Создано по материалам оригинальной статьи Luca Spezzano “How to Remove Unused CSS”
