Как добавить правила оптимизации cssnano в vue-cli 3?

Я пытаюсь добавить правила оптимизации cssnano, но с vue-cli, похоже, это не работает. Я добавил следующий скрипт в vue.config.js:

module.exports = {
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          require("cssnano")({
            preset: [
              "default",
              {
                discardComments: {
                  removeAll: true
                },
                mergeRules: true
              }
            ]
          })
        ]
      }
    }
  }
};

Но это не сработает (см. Скриншот ниже)

Снимок экрана - cssnano mergeRules не применяется:

введите описание изображения здесь

Что я упустил?

0 ответов

Вы должны изменить api chainWebpack для редактирования параметров плагина cssnano.

Запустите эти команды:

npx vue-cli-service inspect --mode=production --plugins 

Это дает вам список плагинов, включенных в наш конфиг веб-пакета. Один из них называется "optimize-css"

npx vue-cli-service inspect --mode=production --plugin optimize-css

Теперь вы получите конфигурацию для этого плагина, включая конфигурацию cssnano. Вы также получите информацию в комментариях о том, как перейти к ней через цепочку веб-пакетов.

Имея эту информацию, мы теперь можем использовать API chainWebpack для редактирования параметров плагина:

// vue.config.js
module.exports = {
  chainWebpack: config => {
    config.plugin('optimize-css').tap(([options]) => {
      options.cssnanoOptions.preset[1].svgo = false
      return [options]
    })
  }
}

Не проверено, поэтому никаких гарантий: wink:

Источник: https://forum.vuejs.org/t/vue-cli-3-remove-svgo-from-cssnano-optimizations/53560/2

Другие вопросы по тегам