Как настроить минимизацию css на выходе из webpack?

162
07 февраля 2019, 19:50

Настроил webpack + postcss/autoprefixer/cssnano на плагине mini-css-extract-plugin, выдержка из webpack.config.js:

{
    test: /\.((s[ac]|c)ss)$/,
    use: [
        plugins.extractCSS.loader,
        {
            loader: 'css-loader',
            options: {
                sourceMap: !isProduction
            }
        },
        {
            loader: 'postcss-loader',
            options: {
                ident: 'postcss',
                sourceMap: !isProduction,
                plugins: (() => {
                    return isProduction ? [
                        require('autoprefixer')(),
                        require('cssnano')({
                            preset: ['default', {
                                minifySelectors: false
                            }]
                        })
                    ] : []
                })()
            }
        },
        {
            loader: 'sass-loader',
            options: {
                outputStyle: 'expanded',
                sourceMap: !isProduction
            }
        }
    ]
}

SCSS на входе:

.test_1 {
    color: red;
}
.test_2 {
    color: green;
}
body {
    .test_3 {
        color: red;
    }
    .test_4 {
        color: red;
    }
    .test_5 {
        color: green;
    }
}

CSS на выходе:

.test_1 {
    color: red
}
.test_2 {
    color: green
}
body .test_3, body .test_4 {
    color: red
}
body .test_5 {
    color: green
}

Но если практично посмотреть на классы и их свойства, то можно оптимизировать и их, например так:

.test_1, body .test_3, body .test_4 {
    color: red
}
.test_2, body .test_5, {
    color: green
}

Вопросы:

  1. Стоит ли так оптимизировать css на выходе?
  2. Как настроить подобную оптимизацию в cssnano (или в другом плагине)?
Answer 1

То что вы хотите сделать при помощи cssnano называется mergeidents. Судя по документации, вам нужна advanced версия.

  1. Если вы хотите оптимизировать CSS для скорости загрузки для production то лучше использовать весь арсенал оптимизации (удаление пробелов и табов, сведение селекторов и свойств, конвертация gzip). Если же это компиляция для dev окружения то данная оптимизация будет создавать небольшой дискомфорт при работе из отладчика браузера.

  2. Эта оптимизация включена по умолчанию в advanced версию

READ ALSO
Пишу микро прогу на WHS, и не понимаю почему не работает

Пишу микро прогу на WHS, и не понимаю почему не работает

Не понимаю почему выводит сообщение "не найден путь", когда данная папка существует и путь верный

145
На сайте используется метрика от Яндекс и Googgle, можно ли ее как то оптимизировать?

На сайте используется метрика от Яндекс и Googgle, можно ли ее как то оптимизировать?

Я заметил что файлы аналитики js, которые подключают метрики, не минимизированный код и они веся достаточно много, есть ли возможность их как-то...

138
Проблема во срезом строки js

Проблема во срезом строки js

Есть строка a = '2018-10-07T10:27:52482555+03:00'

139
Отправка файла в Blob format

Отправка файла в Blob format

Где нужно указывать тип файла (например:png,

169