webpack优化构建体积示例-压缩图片:

news2025/1/18 16:56:15

不同的图片格式有不同的特点和用途,它们也需要不同的压缩算法和技术,也为了保证能在各个浏览器环境下能正常加载显示,所以需要用到多个插件

在使用imagemin-webpack-plugin来配置图片压缩时,你需要确保已经安装了该插件以及它可能依赖的imagemin插件(如imagemin-mozjpeg、imagemin-pngquant等)。

下载imagemin-webpack-plugin插件可能会遇到以下问题
1. 找不到 raw.githubusercontent.com
在hosts配置 199.232.96.133 raw.githubusercontent.com
并刷新hosts重试
2. Error: pngquant failed to build, make sure that libpng-dev is installed
执行npm install --global --production windows-build-tools 
记得同时下载对应版本的python
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin')
const ImageminPlugin = require('imagemin-webpack-plugin').default;
const imageminMozjpeg = require('imagemin-mozjpeg');  
const imageminPngquant = require('imagemin-pngquant');  
// const imageminSvgo = require('imagemin-svgo');  

module.exports = {
    entry: './src/index.js',
    output: {
        filename: 'main.js',
    },
    plugins: [
      new HtmlWebpackPlugin({
        template: './index.html',
      }),
          // 使用imagemin-webpack-plugin对图片进行压缩  
    new ImageminPlugin({  
      // 匹配要处理的图片文件  
      test: /\.(jpe?g|png|gif|svg)(\?.*)?$/i,  
      // 压缩选项  
      pngquant: {  
        quality: [0.65, 0.9], // 压缩级别,范围0-1  
        speed: 4 // 速度,范围1-11  
      },  
      optipng: {  
        optimizationLevel: 7 // 0-7的优化级别  
      },  
      gifsicle: {  
        interlaced: true, // 是否隔行扫描gif进行模糊效果  
        optimizationLevel: 3 // 0-3的优化级别  
      },  
      jpegtran: {  
        progressive: true, // 是否无损压缩  
      },  
      mozjpeg: {  
        quality: 65, // 图片质量,范围0-100  
        progressive: true // 是否启用渐进式编码  
      },  
      svgo: {  
        plugins: [  
          { removeViewBox: false },  
          { cleanupIDs: false }  
          // 可以添加更多SVGO插件配置  
        ]  
      },  
      // 如果你不需要使用额外的imagemin插件,可以省略plugins属性  
      plugins: [  
        imageminMozjpeg(),  
        imageminPngquant({  
          quality: [0.6, 0.8],  
        }),  
        // 自定义插件...  
      ],  
      // 其他配置...  
      // 例如,设置输出目录、文件名哈希等  
      // output: {  
      //   path: 'path/to/output',  
      //   filename: '[name].[hash:8].[ext]'  
      // },  
      // 启用gzip压缩,如果你需要的话  
      // gzip: {  
      //   level: 9,  
      //   options: {  
      //     // gzip options  
      //   }  
      // },  
      // 启用webp格式转换,如果你需要的话  
      // webp: {  
      //   quality: 75  
      // }  
    }),  
    ],
    mode: 'production',
    module: {
      rules: [
        {
          test: /\.(png|jepg|gif|svg)(\?.*)?$/,
          type: 'asset/resource'
        }
      ]
    }
}

压缩前
在这里插入图片描述
压缩后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1682420.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GBDT调参--贝叶斯调参

随机抽特征和随机抽样本 n_estimators 是控制森林中树木的数量,即基评估器的数量。这个参数对随机森林模型的精确性影响是单调的,n_estimators越 大,模型的效果往往越好。但是相应的,任何模型都有决策边 n_estimators达到一定的程…

WPS二次开发系列:第三方应用快速接入WPS打印功能

作者持续关注 WPS二次开发专题系列,持续为大家带来更多有价值的WPS开发技术细节,如果能够帮助到您,请帮忙来个一键三连,更多问题请联系我(QQ:250325397) 目录 应用场景 Demo效果演示 SDK申请及初始化 SD…

Java面试八股之HashSet和TreeSet有什么区别

Java中HashSet和TreeSet有什么区别 1. 底层数据结构 HashSet: 基于哈希表(实际上是 HashMap 的内部实现)实现。每个元素通过其 hashCode() 方法计算出哈希码,并通过哈希码确定其在哈希表中的位置。这种结构使得 HashSet 在插入、删除和查找…

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套

华为 2024 届实习校园招聘-硬件通⽤/单板开发——第六套 部分题目分享,完整版带答案(有答案和解析,答案非官方,未仔细校正,仅供参考)(共十套,每套四十题选择题)获取(WX:…

零基础入门篇④ 初识Python(注释、编码规范、关键字...)

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏订阅地址 👉Python从…

Shiro核心深度解析文档

1. Shiro的介绍 它是一个简单易用的java安全框架,可以运行在非Web环境 1.主要提供的功能 身份认证 大多时称为登录,这是证明用户身份的行为 授权管理 访问控制的过程,即决定"谁"可以做"什么" 会话管理 管理特定于用户的会话,在非Web环境也是这样 密码…

echarts 图表tooltip扩展(适配移动端)

2024.5.16今天我学习了如何对echarts 图表tooltip进行自定义设置,效果如: 如果是日维度,需要展示对应的星期,以及用移动端去查看这个图表提示要显示在整个图表内,如果没有设置position会溢出图表,通用写法代…

数据结构与算法|算法总结|动态规划之编辑距离总结篇

啥也不说先上图! 本节一共总结了六道题,个人认为作为二维dp的典型用法,所以归纳到了一起,方便对比、类比学习。 718.最长重复子序列 力扣题目链接 文章链接 两个整数数组A、B,返回两个数组中 公共的、长度最长的子数组…

跨域数据流动:数据提取过程中的治理与安全双轮驱动

跨域数据流动:数据提取过程中的治理与安全双轮驱动 随着信息技术的飞速发展,跨域数据流动已成为现代社会的常态。从医疗记录到金融交易,从社交媒体到企业运营,数据在各个领域之间频繁交换,为社会发展带来了极大的便利…

Cocktail for Mac 激活版:一站式系统优化与管理神器

Cocktail for Mac是一款专为Mac用户打造的系统优化与管理工具,凭借其强大的功能和简便的操作,赢得了广大用户的喜爱。这款软件集系统清理、修复和优化于一身,能够帮助用户轻松解决Mac系统中的各种问题,提高系统性能。 Cocktail fo…

MySQL单表查询案例演示

目录 一、创建数据库lianxi 二、选择数据库为lianxi 三、新建一个数据表grade,在grade表中插入数据 四、开始进行查询操作(验证表中数据) 1、查询1945班的成绩信息 2、查询1945班,语文成绩大于60小于90的成绩信息 3、查询学…

电商数据分析的介绍及应用||电商数据API接口

在这到处弥漫着电商气息的社会里,人们依靠电商让生活变得简单而便捷。那么作为电商数据分析师,我们需要在海量电商数据中揭示出隐含的、先前未知的并有潜在价值的信息和规律,这也要求我们具备数据洞察和汇总能力,运用数据挖掘模型…

Leetcode-有效的括号(带图)

20. 有效的括号 - 力扣(LeetCode)https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足&…

git 拉取指定目录

指令方式 打开 git 自带的Git Bash 工具 以拉取github中 fastjson 的 /src/test/java/oracle/sql/ 目录为例 1.创建文件夹和git 初始化 cd D:/Program\ Files mkdir fastjson cd fastjson git init 2.设置允许克隆子目录 git config core.sparsecheckout true 3.添加远程…

【physx/wasm】在physx中添加自定义接口并重新编译wasm

目录 说在前面环境搭建编译自定义接口 说在前面 操作系统:windows11wsl2physx版本:5.3.1参考:physx-js-webidl (physx版本为该作者fork出的某个版本) 环境搭建 这里使用的是wsl2docker进行编译的,搭建步骤参考:WSL2 上…

深入探索Jetpack Compose:大前端式客户端开发实战

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

win10编译openssl

环境 Win10 64位 VS2022 openssl 3.3.0 nasm NASM version 2.16.01 compiled on Dec 21 2022 perl strawberry-5.38.2.2环境变量设置 perl加入到环境变量,略过nasm加入到环境变量vs的nmake加入到环境变量我的nmake位置如下: C:\Program…

【Unity Shader入门精要 第7章】基础纹理(二)

除了用于直接表示物体表面颜色,纹理的另外一种常见用法是用来进行凹凸映射,在不增加顶点的情况下,通过纹理来提供额外的法线信息,从而在视觉上增加表面凹凸细节,丰富渲染表现。 最常用的两种凹凸映射为法线贴图和高度…

【C语言每日题解】用函数来模拟实现strlen()、strcpy()、strcmp()、strcat()

🥰欢迎关注 轻松拿捏C语言系列,来和 小哇 一起进步!✊ 学习了函数后,老师让我们用函数来实现上面这四个字符串函数。 我们首先来了解一下这四个字符串函数: 1.strlen函数 用于获取字符串长度(不包括末尾…

用Rust构造一个人员基本信息的实体类,输出json测试结果

目录 一、需求说明 二、知识点 serde 一、需求说明 需求描述:用Rust写一个人员基本信息的实体类, 包括编号、姓名、描述、性别、备注、照片、简历等,加上3条测试数据,输出为json。 cargo add serde serde { version "1.0.201"…