代码之家  ›  专栏  ›  技术社区  ›  FloatingKiwi

Webpack4-从较少文件导入的CSS文件未缩小

  •  2
  • FloatingKiwi  · 技术社区  · 6 年前

    如果在我的入口点我包括一个.css或.less文件,那么一切都正常工作。如果我使用 @include './myfile.less' @include './myfile.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"
            }),
        ]
    
    };
    
    3 回复  |  直到 6 年前
        1
  •  2
  •   Nisfan    6 年前

    虽然webpack5可能内置了CSS最小化工具,但是webpack4需要自带。要缩小输出,请使用类似optimize css assets webpack plugin的插件。设置优化.最小化覆盖webpack提供的默认值,因此确保还指定了JS minimizer

    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

        2
  •  1
  •   FloatingKiwi    6 年前

    我找到笔记了 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({})
            ]
        },
    }
    
        3
  •  0
  •   Stephen Rauch Afsar Ali    6 年前
    use: [
        MiniCssExtractPlugin.loader,
        {
            loader: "css-loader",
            options: {
                minimize: true
            }
        }
    ]
    
    推荐文章