webpack压缩和分离css文件

项目目录如下:

在这里插入图片描述

打包预览(dist 和 index.html)

在这里插入图片描述
在这里插入图片描述

引入css文件(index.ts)
import "./style/index.less";
console.log('entry');
打包配置(webpack.prod.js)
const webpackCommonConf = require('./webpack.common.js')
const { merge } = require('webpack-merge')
const { distPath } = require('./paths')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserJSPlugin = require('terser-webpack-plugin')
const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin')

module.exports = merge(webpackCommonConf, {
    mode: 'production',
    devtool: 'source-map',
    output: {
        filename: 'app/[name].[contenthash:8].bundle.js',
        path: distPath,
        clean: true
        // publicPath: 'http://cdn.abc.com'  // 修改所有静态文件 url 的前缀(如 cdn 域名),这里暂时用不到
    },
    module: {
        rules: [
            // 图片 - 考虑 base64 编码的情况
            {
                test: /\.(png|jpg|jpeg|gif)$/,
                use: {
                    loader: 'url-loader',
                    options: {
                        // 小于 5kb 的图片用 base64 格式产出
                        // 否则,依然延用 file-loader 的形式,产出 url 格式
                        limit: 5 * 1024,

                        // 打包到 img 目录下
                        outputPath: '/img/',

                        // 设置图片的 cdn 地址(也可以统一在外面的 output 中设置,那将作用于所有静态资源)
                        // publicPath: 'http://cdn.abc.com'
                    }
                }
            },
            // 抽离 css
            {
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                ]
            },
            // 抽离less
            {
                test: /\.less$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader',
                    'less-loader',
                    'postcss-loader'
                ]
            }
        ]
    },
    plugins: [
        // 分离CSS
        new MiniCssExtractPlugin({
            filename: 'css/[name].[contenthash:8].css',
        })
    ],
    optimization: {
        // 压缩css
        minimize: true,
        minimizer: [new TerserJSPlugin({}), new OptimizeCssAssetsPlugin({})]
    }
})
插件介绍
分离CSS插件
  • MiniCssExtractPlugin

本插件会将 CSS 提取到单独的文件中,为每个包含 CSS 的 JS 文 件创建一个 CSS 文件,并且支持 CSS 和 SourceMaps 的按需加 载。本插件基于 webpack v5 的新特性构建,并且需要 webpack 5 才 能正常工作。

压缩插件
  • CssMinimizerWebpackPlugin

这个插件使用 cssnano 优化和压缩 CSS。

  • TerserWebpackPlugin

该插件使用 terser 来压缩 JavaScript(在本例中主要压缩js中的css)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值