【问题标题】:Webpack4 - CSS files imported from less files aren't being minifiedWebpack4 - 从较少文件导入的 CSS 文件没有被缩小
【发布时间】:2019-02-17 18:39:16
【问题描述】:

我正在用 webpack 4 组合一个项目。几乎所有的项目都可以正常工作,我只是在缩小 CSS 时遇到了麻烦。

如果在我的入口点中包含 a.css 或 .less 文件,则一切正常。如果我使用@include './myfile.less',它也可以正常工作。但是,如果我使用@include './myfile.css',则该部分会被导入而不被缩小。

如何让导入的 CSS 文件正常工作?

webpack.config

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin'); //installed via npm
const webpack = require('webpack'); //to access built-in plugins
const CopyWebpackPlugin = require('copy-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");

module.exports = {

    entry: {
        'app': './src/app/app.js',
    },

    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: '[name].bundle.js'
    },

    module: {
        rules: [
            {
                test: /\.html/,
                use: 'html-loader'
            },
            {
                test: /\.less$/,
                use: [
                    {
                        loader: MiniCssExtractPlugin.loader,
                    },
                    "css-loader",
                    "less-loader"
                ]
            },
            {
                test: /\.(png|svg|jpg|gif)$/,
                use: ['file-loader?name=assets/images/[path][name].[ext]?[hash]']
            },
            {
                test: /\.(woff|woff2|eot|ttf|otf)$/,
                use: [
                    'file-loader?name=assets/fonts/[name].[ext]?[hash]'
                ]
            }
        ],
    },

    plugins: [
        new HtmlWebpackPlugin({ template: './src/public/index.html' }),
        new MiniCssExtractPlugin({
            // Options similar to the same options in webpackOptions.output
            // both options are optional
            filename: "[name].bundle.css",
            chunkFilename: "[id].css"
        }),
    ]

};

【问题讨论】:

    标签: css webpack-4


    【解决方案1】:
    use: [
        MiniCssExtractPlugin.loader,
        {
            loader: "css-loader",
            options: {
                minimize: true
            }
        }
    ]
    

    【讨论】:

    • 感谢您的回答,但请在您的回答中添加一些说明,说明可以使您的回答更加可靠和易于理解。
    • 这已经过时了
    【解决方案2】:

    虽然 webpack 5 可能内置了 CSS 最小化器,但使用 webpack 4 你需要自带。要缩小输出,请使用像 optimize-css-assets-webpack-plugin 这样的插件。设置 optimization.minimizer 会覆盖 webpack 提供的默认值,所以一定要指定一个 JS 最小化器

    webpack.config.js

    const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
    const MiniCssExtractPlugin = require("mini-css-extract-plugin");
    const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
    module.exports = {
      optimization: {
        minimizer: [
          new UglifyJsPlugin({
            cache: true,
            parallel: true,
            sourceMap: true // set to true if you want JS source maps
          }),
          new OptimizeCSSAssetsPlugin({})
        ]
      },
      plugins: [
        new MiniCssExtractPlugin({
          filename: "[name].css",
          chunkFilename: "[id].css"
        })
      ],
      module: {
        rules: [
          {
            test: /\.css$/,
            use: [
              MiniCssExtractPlugin.loader,
              "css-loader"
            ]
          }
        ]
      }
    }
    

    Reference

    【讨论】:

      【解决方案3】:

      我找到了笔记on MiniCssExtractPlugin production usage。

      以下这些解决了问题:

      具体补充:

      const UglifyJsPlugin = require("uglifyjs-webpack-plugin");
      const OptimizeCSSAssetsPlugin = require("optimize-css-assets-webpack-plugin");
      ...
      module.exports = {
          ... 
          optimization: {
              minimizer: [
                  new UglifyJsPlugin({
                      cache: true,
                      parallel: true,
                      sourceMap: true // set to true if you want JS source maps
                  }),
                  new OptimizeCSSAssetsPlugin({})
              ]
          },
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 2018-04-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多