首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为CSS小型化配置cssnano?

如何为CSS小型化配置cssnano?
EN

Stack Overflow用户
提问于 2019-12-03 00:29:00
回答 3查看 7.6K关注 0票数 1

我试图配置cssnano插件的postcss-loader,这是微型CSS,非常类似,如描述的这里

Webpack配置:

代码语言:javascript
复制
...

  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader, 
          'css-loader',
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: () => [
                cssnano({
                  preset: ['default', {
                    discardComments: {
                      removeAll: true,
                    },
                    // how to find index of all available options?
                  }]
                })
              ]
            }
          },
          'sass-loader'
        ]
      }
    ]
  },

...

这里列出了cssnano文档中的所有优化。

这里是一个例子,说明了如何在default预设的基础上覆盖单个优化discardComments

是否可以单独覆盖每个优化配置,比如使用discardComments?这在为开发和生产创建单独的配置时非常方便。

另外,在这个回购中是一次失败的尝试,只有极小的例子和样板。

编辑:cssnano告诉我们不可能单独配置每个优化插件,相反,可以单独使用每个优化插件来源

EN

回答 3

Stack Overflow用户

发布于 2019-12-03 05:00:25

在Webpack中,使用cssnanopostcss-loadermini-css-extract-plugin并不是缩小的最佳选择,因为设置缩小了单个源文件,而不是整个发出的CSS文件(它有多余的空白)。最好的选择是使用优化-css-资产-webpack-插件

安装:

代码语言:javascript
复制
npm install --save-dev optimize-css-assets-webpack-plugin

并使用添加到您Webpack配置:

代码语言:javascript
复制
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

...

  module: {
    rules: [
      {
        test: /\.css$/,
        use: [
          MiniCssExtractPlugin.loader, 
          'css-loader',
          {
            loader: 'postcss-loader',
            options: {
              ident: 'postcss',
              plugins: [] // Don't add cssnano here. Remove the loader completely if you have no plugins.
            }
          },
          'sass-loader'
        ]
      }
    ]
  },
  optimization: {
    minimizer: [
      new OptimizeCSSAssetsPlugin({
        // cssnano configuration
        cssProcessorPluginOptions: {
          preset: ['default', {
            discardComments: {
              removeAll: true
            }
          }],
        },
      })
    ]
  }

...

cssnano选项索引:https://cssnano.co/optimisations/

但是,如果使用style-loader而不是mini-css-extract-plugin,则应该在cssnano中使用postcss-loader,因为optimize-css-assets-webpack-plugin只对发出的CSS文件进行优化。

票数 4
EN

Stack Overflow用户

发布于 2019-12-03 04:44:47

您可以查看我的完整配置这里

实际上,每次在dev模式下构建时,我都使用webpack外壳插件运行postcss命令。

代码语言:javascript
复制
plugins: [
        new WebpackShellPlugin({
            onBuildStart: ['echo "Starting postcss command"'],
            onBuildEnd: ['postcss --dir wwwroot/dist wwwroot/dist/*.css']
        })
    ],

因此,当构建完成时,postcss命令将启动,以缩小wwwroot/dist中的css文件。

票数 1
EN

Stack Overflow用户

发布于 2019-12-03 00:40:04

代码语言:javascript
复制
please find following steps to creat that
Minimize CSS files with cssnano
wpack.io uses postcss-loader and thereby PostCSS. So we can take advantage of it to minify our CSS/SASS files during production builds.

1
Install and use cssnano
npm i -D cssnano
or with 
yarn add --dev cssnano
2
Edit postcss.config.js file
/* eslint-disable global-require, import/no-extraneous-dependencies */
const postcssConfig = {
    plugins: [require('autoprefixer')],
};

// If we are in production mode, then add cssnano
if (process.env.NODE_ENV === 'production') {
    postcssConfig.plugins.push(
        require('cssnano')({
            // use the safe preset so that it doesn't
            // mutate or remove code from our css
            preset: 'default',
        })
    );
}

module.exports = postcssConfig;
Save it and you are good to go.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59148593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档