Autoprefixer - это плагин PostCSS для добавления вендорных префиксов на основе данных сервиса Can I Use. Благодаря этому плагину, создание кроссбраузерного CSS стало проще. Не нужно добавлять ‘мусорный’ код, так как PostCSS является постобработчиком и добавляет уже, непосредственно, при сборке web-приложения. Это будет небольшой заметкой как быстро настроить Autoprefixer для Webpack 2.

1. Установка

Для начала необходимо установить postcss-loader, который позволяет использовать PostCSS в экосистеме Webpack, без лишних “телодвижений” :

npm install postcss-loader

Также устанавливаем сам плагин:

npm install autoprefixer

2. Конфигурация

Импортируем в файл webpack-конфигурации: const autoprefixer = require('autoprefixer');

И правим в разделе module.rules. Добавляем правило для .scss или .css типов:

{
    loader: 'postcss-loader',
    options: {
        plugins: [
            autoprefixer({
                browsers:['ie >= 8', 'last 4 version']
            })
        ],
        sourceMap: true
    }
},

Важно чтобы оно было расположено после style-loader, css-loader и до sass-loader (если таковой имеется). В опции postcss-loader добавляем плагин, у него же в конструктор передаются опции. Опции можно посмотреть в официальном мануале. Большинство из них включены по умолчанию, можно их опционально отключить. Мы передадим массив браузеров, которые мы хотим использовать. Autoprefixer поддерживает выражения Browserlist, такие как: 'ie >= 8', 'last 4 version'.

В конечном счете, для .scss были добавлены следующие правила:

module: {
    rules: [
        {
            test: /\.scss$/,
            use: [
                {
                    loader: 'style-loader'
                },
                {
                    loader: 'css-loader',
                    options: {
                        sourceMap: true
                    }
                },
                {
                    loader: 'postcss-loader',
                    options: {
                        plugins: [
                            autoprefixer({
                                browsers:['ie >= 8', 'last 4 version']
                            })
                        ],
                        sourceMap: true
                    }
                },
                {
                    loader: 'sass-loader',
                    options: {
                        includePaths: [
                            helpers.root('src', 'styles', 'global'),
                        ],
                        sourceMap: true
                    }
                }
            ],
        },
    ]
},

Плюсом такого подхода является скорость настройки и отсутствие необходимости создавать специальные файлы конфигурации для PostCSS.