webpack4样式篇(抽离压缩css)

本文是样式打包的下篇,重点讨论如何在webpack4中进行CSS的抽离与压缩。内容涵盖不同配置下的抽离效果,如不支持压缩的抽离,以及支持压缩的抽离和压缩。通过配置示例,详细展示了从无到有,再到压缩的完整过程,最终实现将CSS以单独文件形式引入,并进行压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

webpack4样式篇(下)

上一篇总结了样式打包的配置,这一篇主要总结如何抽离出css,压缩css,压缩js

其中涉及到的plugin

  • mini-css-extract-plugin
  • optimize-css-assets-webpack-plugin
  • terser-webpack-plugin
plugin作用
mini-css-extract-plugincss抽离成单独的文件
optimize-css-assets-webpack-plugin把抽离出来的css代码压缩
terser-webpack-plugin压缩js代码

注意:

  • uglifyjs-webpack-plugin作用: 压缩is代码,不支持压缩es6

  • terser-webpack-plugin作用:压缩is代码,支持压缩es6

其中涉及到的loader

  • MiniCssExtractPlugin.loader
loader作用
MiniCssExtractPlugin.loadercss抽离成单独的文件

配置过程:

  1. 没使用任何cssjs插件
    css没有抽离压缩,js没有压缩在这里插入图片描述

  2. 使用mini-css-extract-plugin抽离css
    css被抽离成单独的文件,但是还没有被压缩
    在这里插入图片描述

  3. 使用optimize-css-assets-webpack-plugin压缩抽离出来的css,使用terser-webpack-plugin压缩js
    此时js被压缩,第二步抽离出来的css文件也被压缩
    在这里插入图片描述

  4. 运行配置好后的代码

    这种方式是生成单独的css文件,不再是把样式打包进入头部的style标签,而是以link的方式引入抽离出来的css
    在这里插入图片描述

总的配置:


const path = require('path');
const HtmlWebpackPlugin  = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const TerserJSPlugin = require('terser-webpack-plugin');
const Webpackbar = require('webpackbar');
module.exports = {
    // production模式自动压缩html,js,css,不用额外使用terser-webpack-plugin来压缩js
    // 但是如果要分离css,不管是dev还是prod都需要使用mini-css-extract-plugin
    // 但是如果要压缩分离出来的css,不管是dev还是prod都需要使用optimize-css-assets-webpack-plugin
    mode: 'development',
    entry: {
        main: './src/index.js'
    },
    output: {
        filename: '[name]_[hash:8].js',
        path: path.resolve(__dirname,'../build'),
        publicPath: './'
    },
    plugins:[
        // 打包之后自动生成index.html文件
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: './src/index.html'
        }),
        // 打包之前自动删上一次的打包结果
        new CleanWebpackPlugin(),
        // 打包时候的进度条
        new Webpackbar({color: 'purple'}),
        // 抽离css
        new MiniCssExtractPlugin({
            filename: "css/[name]_[hash:8].css",
            chunkFilename: "[id].css"
        }),
        // 压缩css
        new OptimizeCssAssetsPlugin(),
        // 压缩js
        new TerserJSPlugin(),
    ],
    module: {
        rules:[
            {
                test:/\.css$/,
                use: [
                    // 这里一定要使用MiniCssExtractPlugin.loader才能达到抽离css的效果
                    {
                        loader: MiniCssExtractPlugin.loader,
                    },
                    'css-loader',
                    'postcss-loader',
                    'less-loader'
                ]
            }
        ]
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值