Webpack5 处理图片资源、图标资源、修改输出目录、清空上一次打包的所有文件

2023-11-18

1. 处理图片资源

 Webpack5 已经将两个 Loader【file-loader 和 url-loader 】功能内置到 Webpack 里了,我们只需要简单配置即可处理图片资源 。

 优化 ---> 小图片转化为base64

小图片可以转换为base64,就不用再发起请求,且大1KB不会有什么影响
大图片不转,因为图片转换为base64格式sise会变很大  eg:4.85KB-->6.5KB、194KB-->259KB

 配置文件 webpack.config.js:

// 图片转换为base64
module: {
    rules: [
        {
            test: /\.(png|jpe?g|gif|webp|svg)$/,
            type: 'asset',
            parser: {
                dataUrlCondition: {
                    // 小于10KB图片会转base64,  优点:减少请求数量  缺点:体积变大
                    maxSize: 10 * 1024 // 10kb
                }
            }
        }
    ]
},

再次打包 npx webpack,会发现小于10KB的图片不会再打包,转化成了base64形式

 2.  修改输出文件目录

修改之前所有文件在同一个目录下:

 修改之后:每个模块有相应的目录

具体步骤:修改配置文件 webpack.config.js:

// 输出
output: {
        // __dirname  nodejs的变量,代表当前文件的文件夹目录
        path: path.resolve(__dirname, "dist/"),   //所以文件的输出绝对路径
        filename: 'static/js/main.js'   //入口文件的打包输出名称
},
// 图片加载器
module: {
    rules: [
        {
            test: /\.(png|jpe?g|gif|webp|svg)$/,
            type: 'asset',
            parser: {
                dataUrlCondition: {
                    // 小于10KB图片会转base64,  优点:减少请求数量  缺点:体积变大
                    maxSize: 15 * 1024 // 4kb
                }
            },
            generator: {
                // 输出图片名字
                filename: 'static/images/[hash:10][ext][query]'   //[hash:10] 表示hash值只取10位
            }
        }

    ]
},

 3. 自动清空上次打包内容

只需要在配置文件output 中设置 clean 为 true

    // 输出
    output: {
        // __dirname  nodejs的变量,代表当前文件的文件夹目录
        path: path.resolve(__dirname, "dist/"),   //所以文件的输出绝对路径
        filename: 'static/js/main.js',   //入口文件的打包输出名称
        // 自动清空上次打包内容  原理:在打包前,将path整个目录内容清空,在进行打包
        clean:true,
    },

4. 处理字体图标资源

1.下载图标资源: iconfont-阿里巴巴矢量图标库

2. 把图标放入项目中,并修改文件引入路径

 3. 引入 iconfont.css 文件

import './css/iconfont.css'

4. 修改输出目录

module: {
    rules: [
        // 图标
        {
            test: /\.(ttf|woff2?)$/,
            type: 'asset/resource',
            generator: {
                // 输出名字
                filename: 'static/media/[hash:10][ext][query]'
            }
        }

    ]
},

5.使用

 <span class="iconfont icon-shequweixiu"></span>

5. 处理其他资源

// 其他资源
{
    test: /\.(map3|map4|avi)$/,   //在这里加上就可以统一处理
    type: 'asset/resource',
    generator: {
    // 输出名字
    filename: 'static/media/[hash:10][ext][query]'  
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack5 处理图片资源、图标资源、修改输出目录、清空上一次打包的所有文件 的相关文章

  • 人脸重建环境配置时的坑

    ERROR Could not install packages due to an EnvironmentError Errno 28 No space left on device 由于是docker环境 所以把 tmp目录下的文件清理
  • 《Apache MINA 2.0 用户指南》第一章:入门

    最近准备将Apache MINA 2 0 用户指南英文文档翻译给大家 但是我偶然一次百度 发现 Defonds 这位大牛已经翻译大部分文档 原文链接 http mina apache org mina project userguide c
  • [C#] 汉字转拼音,支持多音字

    这份代码大概不是严格意义上正确的 但是一般场景用用应该没问题 而且支持dotnet core public static class Pinyin region 拼音对照表 private static string py 一 yi 丁 d
  • Unity 调用系统键盘

    using System Diagnostics using UnityEngine public class KeyboardEvent MonoBehaviour private Process keyboard

随机推荐

  • 第十章 内部类(下)

    第十章 内部类 下 随着后面所讲的内容越来越深入 所以可能理解得比较慢了 同时这里边的文字描述和示例也越来越多 希望大家能够坚持下去 慢慢看完 相信会有所收获 当然如果像我一样一个字一个字的敲一遍 印象会更深的 不骗你 因为有的东西开始真的
  • SpringCloud Alibaba 框架背后的故事

    前言 Spring Cloud Alibaba是Spring Cloud的一个子项目 它是由阿里巴巴公司推出的 用于构建基于微服务架构的分布式应用程序的开源框架 它与Spring Cloud的其他组件 如Netflix OSS 相结合 为开
  • sqli-labs Less5-6(布尔盲注)

    目录 前言 一 Less 5 1 布尔型的注入相比前四关 思路上最大的不同就是通过对错来获取对你来说有用的信息 1 先找到注入点 2 先判断数据库长度 3 判断数据库名中的每一个字母是什么 4 同样得方法测试表名 5 根据第四步得出表名 推
  • 人性的弱点

    附 本作品来自互联网 本人不做任何负责 内容版权归作者所有 人性的弱点 by Dale Carnegie雷吟译 目录 这本书对你有十二种功用 译者序 前言 原著序 如何从这本书里获得最大效益 第一篇 待人的基本技巧 第一章 如欲采蜜 勿蹴蜂
  • QT槽函数的使用

    QT槽函数的使用 例如 在头文件中设置槽函数 public slots void OnClickedButtonEnsure void OnClickedButtonExit cpp文件 构造函数中写入 connect ui pushBut
  • STM32F103ZET6【标准库函数开发】------配置定时器参数的几个常用函数

    TIM TimeBaseInitTypeDef 基本初始化 TIM OCInitTypeDef 比较输出初始化 TIM ICInitTypeDef 输入捕获初始化 TIM BDTRInitTypeDef 断路和死区初始化 TIM TimeB
  • pycharm创建的虚拟环境为什么用conda env list命令查询不到?

    问题描述 pycharm创建的虚拟环境为什么用conda env list命令查询不到 pycharm开发环境可以创建虚拟环境 目的是为隔绝其他环境种库带来的版本干扰 但是发现一个问题 无论是在windows终端 anaconda终端 Py
  • Java课程设计-学籍信息管理系统

    一 系统分析 学生的学籍信息是记录学生的重要信息档案 如何以电子文档形式记录下学生的学籍信息是每个学校必须做的事情 该学生学籍信息管理系统就是为了方便学校记录下每一个学生的基本信息 生成电子数据库 并且能够做到查询 更改 删除 浏览等功能操
  • Unity 移动端触摸屏操作

    Unity 触屏操作 当将Unity游戏运行到IOS或Android设备上时 桌面系统的鼠标左键可以自动变为手机屏幕上的触屏操作 但如多点触屏等操作却是无法利用鼠标操作进行的 Unity的Input类中不仅包含桌面系统的各种输入功能 也包含
  • 关于类和对象

    1 面向对象是一种技术的开发模式 但是最早的时候所使用的模式是面向过程 面向对象就是一种组件化的设计思想 面向过程 指的是针对于某一问题单独提出解决方案及代码开发 面向对象 以一种组件化的形势进行代码的设计 这样开发出来的代码有一个最大的好
  • Python Tkinter实现简单文本编辑器

    下面看看如何利用Tkinter实现一个文本编辑器 语言 python 运行效果 在 Python 代码中使用 Tkinter 的简单文本编辑器应用程序 这 使用Tkinter的简单文本编辑器应用程序 是编码在 python 程序设计语言 该
  • [编写高质量代码:改善java程序的151个建议]建议103 反射访问属性或方法时将Accessible设置为true...

    转载于 https www cnblogs com akingseu p 3506576 html
  • canvas小练习之鼠标粒子特效

  • Qt 笔记5--Qt 拉伸窗体

    Qt 笔记5 Qt 拉伸窗体 正常情况下 Qt主窗体拉伸 但内部子窗体大小及位置并未发生该表 导致出现一部分空白区域 因此实际中为了美观需要实现其动态拉伸和调整效果 以下为笔者通过重新resizeEvent方法实现的一个简单拉伸案例 相应学
  • 小程序如何进行分包详细介绍

    微信小程序开发过程中 随着业务不断迭代 程序包的体积越来越大 使用分包加载是开发者必须面对的问题 正常情况下 小程序首次启动时 会将整个代码包下载下来 所以如果代码包过大 会影响小程序首次启动时间 因此微信官方对小程序代码包做了大小限制 官
  • JetBrains Resharper 2019.1.3的安装、破解、使用

    最近在浏览GitHub时 看到好多项目下面会有如下图标 几经折腾之后 发现这个一个非常好用的VS插件 称为神级也不为过 可以进行编写提示 代码重构 文件搜索等许多操作 当然目前最新版的VS中已经具有很多类似的功能 但是这个插件从实用性上来说
  • 2014年2月7日星期五(7-3,消除了背面的3D线框立方体)

    好久没进行了 看看吧 与DEMO7 2的区别 只看不同的地方 相机类型不同 归一化平面改为2 2 ar 视口为640 480 执行了背面消除 就是判断面元向量与面元到视点向量的点乘 gt 0 则可见 否则 消除 这一步是在物体剔除后和世界坐
  • 百度飞浆零基础实践深度学习入门课,通过PaddlePaddle实现波士顿房价预测

    百度架构师手把手带你零基础实践深度学习 课程已加入学习 对深度学习有了深入浅出对理解 并通过两种方式实现波士顿房价预测的算法 包括Python和Numpy构建深度学习框架 以及使用paddlepaddle快速搭建 快速实现预测 A 使用Py
  • 使用pl.droidsonroids.gif.GifImageView在安卓中显示动图遇到的问题

    在做一款聊天软件 其中聊天界面需要发送表情 而表情都是动图 在安卓中想要显示动图 就要借助第三方框架 我选的是pl droidsonroids gif GifImageView 使用方法如下 你在github上下载了android gif
  • Webpack5 处理图片资源、图标资源、修改输出目录、清空上一次打包的所有文件

    1 处理图片资源 Webpack5 已经将两个 Loader file loader 和 url loader 功能内置到 Webpack 里了 我们只需要简单配置即可处理图片资源 优化 gt 小图片转化为base64 小图片可以转换为ba