简体   繁体   English

webpack/cssnano 没有压缩所有 CSS 文件?

[英]webpack/cssnano not compressing all CSS files?

I'm using我在用着

  • webpack 4 webpack 4
  • postcss-loader postcss加载器
  • cssnano cssnano
  • mini-css-extract-plugin迷你 CSS 提取插件

The postcss/cssnano config looks like: postcss/cssnano 配置如下所示:

    {
        loader: 'postcss-loader',
        options: {
            sourceMap: true,
            plugins: loader => {
                const plugins = [
                    require('postcss-preset-env')(),
                ];
                if (nodeEnv === 'production') {
                    plugins.push(
                        require('cssnano')({
                            preset: ['default',
                                {
                                    discardComments: {
                                        remove: comment => !copyrightPatt.test(comment),
                                    },
                                }
                            ]
                        }),
                    );
                }
                return plugins;
            },
        }
    },

The loaders look like this:装载机看起来像这样:

      {
        test: /\.css$/,
        use: [
          '.../node_modules/mini-css-extract-plugin/dist/loader.js',
          {
            loader: 'css-loader',
            options: {
              modules: [Object],
              localsConvention: 'dashes',
              sourceMap: true
            }
          },
          {
            loader: 'postcss-loader',
            options: { sourceMap: true, plugins: [Function: plugins] }
          }
        ]
      },
      {
        test: /\.less$/,
        use: [
          '.../node_modules/mini-css-extract-plugin/dist/loader.js',
          {
            loader: 'css-loader',
            options: {
              modules: [Object],
              localsConvention: 'dashes',
              sourceMap: true
            }
          },
          {
            loader: 'postcss-loader',
            options: { sourceMap: true, plugins: [Function: plugins] }
          },
          {
            loader: 'less-loader',
            options: { sourceMap: false, strictMath: true, strictUnits: true }
          }
        ],
        exclude: '.../src/resources/assets/scripts/components'
      },
      {
        test: /\.less$/,
        use: [
          '.../node_modules/mini-css-extract-plugin/dist/loader.js',
          {
            loader: 'css-loader',
            options: {
              modules: [Object],
              localsConvention: 'dashes',
              sourceMap: true
            }
          },
          {
            loader: 'postcss-loader',
            options: { sourceMap: true, plugins: [Function: plugins] }
          },
          {
            loader: 'less-loader',
            options: { sourceMap: false, strictMath: true, strictUnits: true }
          }
        ],
        include: '.../src/resources/assets/scripts/components'
      },

I've got an index.less file that looks like this:我有一个index.less文件,如下所示:

@import './anticon';
@import '~antd/lib/select/style/index.css';
.ant-select-dropdown-menu {
    margin: 0;
}
.anticon-down:before {
    content: none; 
}
@import 'forms.less';
@import 'tables.less';
@import '../markons/markons.css';
... more imports ...

And an index.js file somewhere with another css import:还有一个 index.js 文件和另一个 css 导入:

require('trumbowyg/dist/ui/trumbowyg.css');

The outputted css file looks like:输出的 css 文件如下所示:

my css, compressed
source of trumbowyg/dist/ui/trumbowyg.css, uncompressed
source of antd/lib/select/style/index.css, uncompressed
markons.css, uncompressed
more more my css, compressed

What I'm trying to figure out is why some of the sources aren't uncompressed?我想弄清楚的是为什么某些来源没有被压缩?

I thought maybe it was all the ones under node_modules that were uncompressed, but markons.css is not under node_modules.我想也许是node_modules下的所有未压缩的,但是markons.css不在node_modules下。 So then I thought maybe it's the CSS files (LESS files are compressed).所以然后我想可能是 CSS 文件(压缩了 LESS 文件)。 This seems consistent这似乎一致[found some CSS files that ARE compressed], but I'm using the same postcss-loaders for.css files, so I don't understand why it wouldn't work on them? [找到了一些压缩的 CSS 文件],但我对.css 文件使用相同的 postcss-loaders,所以我不明白为什么它对它们不起作用?

I moved the minifying step into OptimizeCSSAssetsPlugin :我将缩小步骤移至OptimizeCSSAssetsPlugin

        optimization: {
            minimizer: [
                new OptimizeCSSAssetsPlugin({
                    cssProcessor: require('cssnano'),
                    cssProcessorPluginOptions: {
                        preset: ['default',
                            {
                                discardComments: {
                                    remove: comment => !copyrightPatt.test(comment),
                                },
                            }
                        ]
                    },
                })
            ]
        }

Should save a few extra bytes too because it can process the entire bundle at once, but I'd still like to know what was causing some files to not be processed.也应该节省一些额外的字节,因为它可以一次处理整个包,但我仍然想知道是什么导致某些文件无法处理。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM