webpack配置自动压缩图片
手动压缩图片
图片压缩是很重要的前端优化,一般可以选择手动压缩
手动压缩网站
webpack压缩图片
这里记录借助webpack的image-webpack-loader实现自动压缩图片
项目是create-react-app搭建的,webpack@5.64.4
1、安装相应loader
npm i image-webpack-loader --save-dev
2、webpack相关配置
webpack@5.x
const imageInlineSizeLimit = parseInt(process.env.IMAGE_INLINE_SIZE_LIMIT || '10000');
{test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],type: 'asset',parser: {dataUrlCondition: {maxSize: imageInlineSizeLimit,},},use: [{loader: 'image-webpack-loader',options: {mozjpeg: {progressive: true,quality: 50},optipng: {enabled: false,},pngquant: {quality: [0.5, 0.65],speed: 4},gifsicle: {interlaced: false,},//ios不支持// webp: {// quality: 100// }}}],},
Webpack5 已经将file-loader和url-loader两个 Loader 功能内置到 Webpack 里了,所以只需要配置 type: "asset"即可处理图片资源
webpack@4.x
webpack4 需要配置file-loader
{test: /\.(gif|png|jpe?g|svg)$/i,use: [{loader: "file-loader",options: {name: "[name].[hash:7].[ext]",outputPath: "img",},},{loader: "image-webpack-loader",options: {mozjpeg: {progressive: true, quality: 60, // JPG 输出的质量 一般60为可接受的},optipng: {enabled: true,},pngquant: {quality: [0.5, 0.65], // PNG 质量范围speed: 4,},gifsicle: {interlaced: false,// 优化GIF},webp: {quality: 75, // 转换为 webp},},},],},
实践踩坑
我的项目是webpack@5.x,node@14.19.1,npm安装image-webpack-loader后一直报错
解决方法:切换node版本node@16.14.2,删除image-webpack-loader后重新安装
效果
使用前 0.99 MB
使用后 205 KB
相关文章:
webpack配置自动压缩图片
手动压缩图片 图片压缩是很重要的前端优化,一般可以选择手动压缩 手动压缩网站 webpack压缩图片 这里记录借助webpack的image-webpack-loader实现自动压缩图片 项目是create-react-app搭建的,webpack5.64.4 1、安装相应loader npm i image-webpack…...
基于单片机预费电表控制系统(proteus仿真+源程序)
一、系统方案 1、本设计采用这51单片机作为主控器。 2、采集电量值送到液晶1602显示。 3、按键设置预设值,实际使用电量超过设置,蜂鸣器报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void LCD_init(void) { …...
【报错栏】(Vue) Invalid handler for event “click“: got undefined
Property or method "add" is not defined on the instance but referenced during render. 翻译: 属性或方法“add”未在实例上定义,但在渲染期间引用。 Invalid handler for event "click": got undefined 翻译: …...
单片机、ARM、嵌入式开发、Android 底层开发有什么关系?
单片机、ARM、嵌入式开发、Android 底层开发有什么关系? 从我目前的见识来看: 单片机是个系统(比如:51、AVR、PLC...),其中包含了去除了输入输出之外的运算器、控制器、存储器,我们用程序可以非…...
Java中static、final、static final的区别
文章目录 finalstaticstatic final final final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。 final修…...
文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《交直流配电网中柔性软开关接入的规划-运行协同优化方法》
这个标题涉及到交直流配电网中柔性软开关接入的规划-运行协同优化方法。下面是对这个标题各部分的详细解读: 交直流配电网: 这指的是一个电力系统,同时包含交流和直流电力传输的元素。这样的系统可能结合了传统的交流电力传输和近年来兴起的直…...
OSG文字-osgText3D(5)
osgText3D 三维立体文字比二维平面文字显示效果更好,相对二维平面文字,它有非常好的立体显示效果。 在实际虚拟现实项目中,过多使用三维立体文字会降低染效率,加重渲染负担,相对平面二维文字,它占用的内存是…...
ASN.1 编码规则概述(一)
文章目录 一、ASN.1二、 ASN.1的标准编码规则分类三、描述ASN.1记法的标准四、描述ASN.1编码规则的标准 一、ASN.1 ASN.1(Abstract Syntax Notation One) 是一套标准,是描述数据的表示、编码、传输、解码的灵活的记法,它提供了一套正式、 无…...
STM32 中断系统
单片机学习 目录 文章目录 前言 一、中断系统 1.1 什么是中断 1.2 中断优先级 1.3 中断嵌套 1.4 C语言中的中断程序 二、STM32的中断通道和中断向量 2.1 中断通道 2.2 嵌套向量中断控制器NVIC 2.2.1 什么是NVIC 2.2.2 NVIC基本结构 2.2.3抢占优先级和响应优先级 2.2.4 NVIC的优…...
电磁场信息论及先进MIMO (黄大年茶思屋座谈) 笔记
天线阵的负载动态调控,动态阻抗匹配网络,实时跟着扫描角度的变化而变化,可能突破Hannan极限。 新的天线构架: 周期 —》非周期 每个单元不一样 动态可调,可重构 每个天线多端口或多模式 多层天线 非周期结构天线的增…...
Arm64版本的centos编译muduo库遇到的问题的归纳
环境:Mac m2 pro下的VMware虚拟机中Arm64 centos ./build.sh 执行后提示如下 cmake -DCMAKE_BUILD_TYPErelease -DCMAKE_INSTALL_PREFIX…/release-install-cpp11 -DCMAKE_EXPORT_COMPILE_COMMANDSON /root/package/muduo-master – Boost version: 1.69.0 – Co…...
leetcode:495. 提莫攻击
一、题目 链接:495. 提莫攻击 - 力扣(LeetCode) 函数原型:int findPoisonedDuration(int* timeSeries, int timeSeriesSize, int duration) 二、思路 遍历数组timeSeries,如果 元素值duration < 下一元素值 &#x…...
《微信小程序从入门到精通》---笔记1
小程序,我又来学习啦!请多关照~ 项目驱动 小程序开发建议使用flex布局在小程序中,页面渲染和业务逻辑是分开的,分别运行在不同的线程中。Mini Program于2017年1月7号正式上线小程序的有点:跨平台、开发门槛低、开发周…...
Python---函数定义时缺省参数(参数默认值)---放最右边
缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数时 可 不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)。 比如:原先的代码&#…...
深度学习之自监督模型汇总
1.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding paper:https://arxiv.org/pdf/1810.04805v2.pdf code:GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT Abstract:我们引入了一种名为 BE…...
竞赛 : 题目:基于深度学习的水果识别 设计 开题 技术
1 前言 Hi,大家好,这里是丹成学长,今天做一个 基于深度学习的水果识别demo 这是一个较为新颖的竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/pos…...
oracle的debjob挂載及查詢
背景 有一個需求需要定時去執行一個produce,可以使用oracle的dbjob定時執行,相比較之前的vbs更加絲滑 --傳遞produce 開始的時間 頻率 declarea number;beginDBMS_JOB.SUBMIT(a,xx_warehouse_daliy_record_p;,to_date(202311230800,yyyymmddhh24mi),…...
Pycharm创建项目新环境,安装Pytorch
在python项目中,很多项目使用的各类包的版本是不一致的。所以我们可以对每个项目有专属于它的环境。所以这个文章就是教你如何创建新环境。 一、创建新环境 首先我们需要去官网下载conda。然后在Pycharm下面添加conda的可执行文件。 用conda创建新环境。 二、…...
assert断言
1.引入 assert.h 头⽂件定义了宏 assert() ,⽤于在运⾏时确保程序符合指定条件,如果不符合,就报错终⽌运⾏。这个宏常常被称为“断⾔”。 2.应用 assert(p ! NULL); 上⾯代码在程序运⾏到这⼀⾏语句时,验证变量 p 是否等于 …...
我们对凌鲨的一次重构
在10月我们对凌鲨进行了一次重构,把所有鸡肋的功能都删除了。 新版本界面 老版本界面 我们干掉的功能 移除沟通频道功能 沟通频道类似slack功能,用于团队沟通。由于国内有大量的沟通软件,比如企业微信,飞书,钉钉等。…...
ZYNQ - 嵌入式Linux开发 - 从零到一:Petalinux工程构建与启动全解析
1. 从零搭建Petalinux开发环境 第一次接触ZYNQ嵌入式Linux开发的朋友,可能会被一堆专业术语吓到。其实没那么复杂,我刚开始也踩过不少坑,现在回头看整个流程其实挺清晰的。咱们先从最基础的环境搭建说起。 Petalinux是Xilinx官方提供的嵌入式…...
DeepBlueCLI输出格式详解:JSON、CSV、HTML等数据处理技巧
DeepBlueCLI输出格式详解:JSON、CSV、HTML等数据处理技巧 【免费下载链接】DeepBlueCLI 项目地址: https://gitcode.com/gh_mirrors/de/DeepBlueCLI DeepBlueCLI是一款强大的PowerShell模块,专为通过Windows事件日志进行威胁狩猎设计。它能够自动…...
XUnity.AutoTranslator终极指南:5分钟实现Unity游戏AI实时翻译
XUnity.AutoTranslator终极指南:5分钟实现Unity游戏AI实时翻译 【免费下载链接】XUnity.AutoTranslator 项目地址: https://gitcode.com/gh_mirrors/xu/XUnity.AutoTranslator 还在为外语Unity游戏的语言障碍而烦恼吗?XUnity.AutoTranslator是一…...
逆向思维:不写爬虫,用FFmpeg一键下载微信小程序里的M3U8视频流
逆向思维:用FFmpeg高效下载微信小程序M3U8视频流 每次遇到需要保存微信小程序里的视频时,大多数开发者第一反应就是写爬虫——抓包分析、下载TS片段、合并文件,一套流程下来至少得折腾半小时。但今天我要分享一个更聪明的解决方案:…...
WechatDecrypt终极指南:简单三步恢复微信聊天记录
WechatDecrypt终极指南:简单三步恢复微信聊天记录 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为误删重要微信消息而懊恼?或者需要备份珍贵的聊天记录却无从下手&a…...
突破传统收音机局限:用SI4735库打造智能无线电系统的终极指南
突破传统收音机局限:用SI4735库打造智能无线电系统的终极指南 【免费下载链接】SI4735 SI473X Library for Arduino 项目地址: https://gitcode.com/gh_mirrors/si/SI4735 还在为传统收音机开发繁琐的硬件设计而烦恼吗?还在为复杂的射频电路调试而…...
Node 18 网络导入新特性:从HTTP/HTTPS URL直接加载ES模块
1. Node 18网络导入功能初探 最近在Node.js社区里有个让人兴奋的新消息:Node 18引入了一个实验性功能,允许开发者直接从HTTP/HTTPS URL导入ES模块。这个功能看似简单,但实际上解决了不少开发中的痛点。想象一下,你不再需要把远程的…...
Python的__annotations__:运行时类型注解访问
Python的__annotations__:运行时类型注解访问 在Python中,类型注解是一种强大的工具,它不仅能提升代码可读性,还能通过工具(如mypy)进行静态类型检查。注解的真正价值不仅限于开发阶段——Python还提供了_…...
10分钟学会用C语言构建Android应用:rawdrawandroid零基础入门指南
10分钟学会用C语言构建Android应用:rawdrawandroid零基础入门指南 【免费下载链接】rawdrawandroid Build android apps without any java, entirely in C and Make 项目地址: https://gitcode.com/gh_mirrors/ra/rawdrawandroid rawdrawandroid是一个革命性…...
前端路由管理方案
前端路由管理方案是现代Web应用开发中的核心技术之一,它决定了用户如何与单页面应用(SPA)交互,以及页面如何在不刷新的情况下实现动态切换。随着前端框架的普及,路由管理从简单的URL跳转演变为复杂的导航控制、权限校验…...
