如何在 vue-cli 3 中添加 cssnano 优化规则?

Ern*_*nie 2 webpack vue.js cssnano vue-cli vue-cli-3

我正在尝试添加 cssnano 优化规则,但是使用 vue-cli,它似乎不起作用。我在中添加了以下脚本vue.config.js

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

但它不起作用(见下面的截图)

屏幕截图 - cssnanomergeRules不适用:

在此处输入图片说明

我错过了什么?

Mac*_*ins 5

您必须修改 chainWebpack api 才能编辑 cssnano 插件选项。

运行这些命令:

npx vue-cli-service inspect --mode=production --plugins 
Run Code Online (Sandbox Code Playgroud)

这为您提供了包含在我们的 webpack 配置中的插件列表。其中之一称为“优化css”

npx vue-cli-service inspect --mode=production --plugin optimize-css
Run Code Online (Sandbox Code Playgroud)

现在您获得了该插件的配置,包括 cssnano 配置。您还可以在评论中获得有关如何通过 webpack-chain 导航到它的信息。

有了这些信息,我们现在可以使用 chainWebpack api 来编辑插件选项:

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

未经测试,所以不能保证 :wink:

来源:https : //forum.vuejs.org/t/vue-cli-3-remove-svgo-from-cssnano-optimizations/53560/2