PostCSS и автоматическое добавление префиксов (postcss-loader)

Дата обновления перевода: 2022-01-19

PostCSS и автоматическое добавление префиксов (postcss-loader)

PostCSS - это инструмент пост-обработки CSS, который может трансформировать ваш CSS множеством крутых способов, как например aавтоматическое добавление префиксов, проверка соблюдения стандарта оформления кода и многими другими!

Для начала, подключите его в webpack.config.js:

1
2
3
4
5
6
// webpack.config.js

  Encore
      // ...
+     .enablePostCssLoader()
  ;

Затем перезапустите Encore. Когда вы это сделаете, он даст вам команду, которую вы можете выполнить, чтобы установить все недостающие зависимости. После выполнения этой команды и перезапуска Encore, вы закончили!

Далее, скачайте те плагины, которые вы хотите, вроде autoprefixer:

1
2
3
4
5
# if you use the Yarn package manager
$ yarn add autoprefixer --dev

# if you use the npm package manager
$ npm install autoprefixer --save-dev

Далее, создайте файл postcss.config.js в корне вашего проекта:

1
2
3
4
5
6
7
8
9
module.exports = {
    plugins: {
        // добавьте любые желаемые вами плагины,
        // но убедитесь в том, что устанавливаете их через yarn или npm!

        // добавьте конфигурацию browserslist к package.json (см. ниже)
        autoprefixer: {}
    }
}

Вот и всё! Теперь postcss-loader будет использован для всех файлов CSS, Sass, и др. Вы также можете передавать опции в postcss-loader, передавая обратный вызов:

1
2
3
4
5
6
7
8
9
10
11
12
// webpack.config.js
+ const path = require('path');

  Encore
      // ...
+     .enablePostCssLoader((options) => {
+         options.postcssOptions = {
+             // the directory where the postcss.config.js file is stored
+             config: path.resolve(__dirname, 'sub-dir', 'custom.config.js'),
+         };
+     })
  ;

Добавление browserslist в package.json

autoprefixer (и множеству других инструментов) нужно знать, какие браузеры вы хотите поддерживать. Лучшей практикой является конфигурация этого напрямую в вашем package.json (чтобы все инструменты могли его прочитать):

1
2
3
4
5
{
+  "browserslist": [
+    "defaults"
+  ]
  }

Опция defaults рекомендована для большинства пользователей и будет эквивалентна следующему browserslist:

1
2
3
4
5
6
7
8
{
+  "browserslist": [
+    "> 0.5%",
+    "last 2 versions",
+    "Firefox ESR",
+    "not dead"
+  ]
  }

См. browserslist, чтобы узнать больше деталей о синтаксисе.