当前位置: 首页 > news >正文

Vite 如何优化项目的图片体积

Vite 如何优化项目的图片体积

一、前言

在前端工程化中,图片优化是提升项目性能的重要环节之一,也是提升性能的关键步骤。vite-plugin-imagemin提供了丰富的配置选项,支持 GIF、PNG、JPG、SVG 等格式的压缩。本文将详细介绍该插件的完整配置及各参数的作用。告诉大家如何在 Vite 中使用vite-plugin-imagemin对图片进行高效压缩,减少加载时间,提高用户体验。

二、安装vite-plugin-imagemin

在 Vite 项目中,使用vite-plugin-imagemin进行图片压缩。首先安装插件:

# 写这篇文章的时候,版本是 0.6.1 pnpm add vite-plugin-imagemin -D

三、配置vite.config.ts

vite.config.ts中配置vite-plugin-imagemin,同时判断当前环境是否是生产模式:

import { defineConfig } from 'vite' import viteImagemin from 'vite-plugin-imagemin' export default defineConfig(({ command }) => { const isBuild = command === 'build' // 是否为生产模式 return { plugins: [ viteImagemin({ gifsicle: { interlaced: true, // 隔行扫描 optimizationLevel: 3, // 压缩级别(0-3) }, optipng: { optimizationLevel: 5, // 压缩级别(0-7),值越大压缩率越高 }, mozjpeg: { quality: 80, // 压缩质量(0-100) progressive: true, // 渐进式加载 smooth: 2, // 平滑处理,减少色彩失真 }, svgo: { plugins: [ { name: 'removeViewBox', active: false }, // 保留 viewBox 以防止 SVG 变形 { name: 'removeEmptyAttrs', active: true }, // 移除空属性 { name: 'convertColors', params: { currentColor: true } }, // 颜色转换 ] }, webp: { quality: 80, // WebP 质量(0-100) lossless: false, // 是否无损压缩 method: 6, // 压缩方法(0-6),数值越大,压缩率越高但速度变慢 }, pngquant: { quality: [0.8, 0.9], // PNG 质量范围 speed: 4, // 压缩速度(1-10),数值越大速度越快但压缩率降低 }, disable: !isBuild, // 仅在生产环境启用 /** 是否在控制台输出压缩结果 */ verbose: true, }) ] } })

四、参数解析

4.1、gifsicle(GIF 优化)

参数作用取值范围推荐值
interlaced是否启用隔行扫描true/falsetrue
optimizationLevel压缩级别0-33

4.2、optipng(PNG 优化)

参数作用取值范围推荐值
optimizationLevel压缩级别0-75

4.3、mozjpeg(JPG 优化)

参数作用取值范围推荐值
quality质量0-10080
progressive渐进式加载true/falsetrue
smooth平滑度0-1002

4.4、svgo(SVG 优化)

参数作用取值范围推荐值
removeViewBox保留viewBox防止 SVG 变形true/falsefalse
removeEmptyAttrs移除空属性true/falsetrue
convertColors颜色转换{ currentColor: true }{ currentColor: true }

4.5、webp(WebP 优化)

参数作用取值范围推荐值
quality质量0-10080
lossless是否无损压缩true/falsefalse
method压缩方法(数值越大,压缩率越高但速度变慢)0-66

4.6、pngquant(PNG 量化)

参数作用取值范围推荐值
quality质量范围[min, max](0-1)[0.6, 0.8]
speed压缩速度,越大速度越快但压缩率降低1-104

4.7、其它配置

参数作用取值范围推荐值
svgoOptions.multipass多次优化 SVGtrue/falsetrue
cache开启缓存,加快二次构建true/falsetrue
filter过滤文件路径,如跳过node_modules目录(source: string) => boolean!source.includes('node_modules')
disable仅在生产环境启用true/false!isBuild

五、总结

使用vite-plugin-imagemin,可以实现:

  • ✅ 自动化图片压缩,提高页面加载速度
  • ✅ 支持 PNG、JPG、GIF、SVG、WebP 多种格式
  • ✅ 仅在生产环境启用,开发环境不受影响
  • ✅ 结合缓存功能,提高构建速度

希望这篇文章能帮助你更好地优化 Vite 项目的图片资源!🚀

http://www.cnnetsun.cn/news/9618.html

相关文章:

  • AXI-A7.4.1 Overview
  • V型翅片与六边形蜂窝翅片的散热性能差异
  • 以太网温湿度传感器五重告警方式如何协同工作?
  • COMSOL介电金属多层膜结构宽谱吸收器:文献复现与吸收特性研究
  • 【必看收藏】LangChain生态实战:LangGraph+LangSmith构建可追踪AI智能体全流程解析
  • 使用DeepSeek开发第一个RAG
  • Jetson Secure Boot 完整实战指南:从 Fuse Key → Boot Chain → 验签代码路径的源码级解析
  • 【LeetCode30_滑动窗口 + 哈希表】:三招搞定“串联所有单词的子串”
  • 以全栈AI能力重塑智能客服服务效能
  • 如何在PHP项目中嵌入Rust代码?5步实现毫秒级响应的高性能服务集成
  • 英伟达推出云端算力集群监管工具,自证GPU无后门
  • 如何用智能配色工具3步打造品牌视觉一致性
  • 【OD刷题笔记】- 分苹果
  • MCP SC-400从入门到精通,构建抗量子攻击防线的关键路径
  • Bigemap Pro水文分析三大核心功能详解:从DEM到精准河网提取
  • Java学习日志--常见类库(上)
  • 直播带货APP开发的核心流程:推流端、观看端与运营端后台搭建指南
  • Wan2.2-T2V-A14B生成火星殖民基地建设构想视频
  • TSF输入法框架开发全指南:从COM组件到拼音输入法落地
  • 在线考试软件哪个好用?
  • 在AWS Athena中使用json_extract_scalar函数对某个json字段进行过滤和分组统计
  • 力扣 22. 括号生成:C++ 实现回溯 + 动态规划双解法,面试高频题必掌握
  • 【开题答辩全过程】以 基于Django的大学生理财及记账系统设计与实现为例,包含答辩的问题和答案
  • Rust的移动语义
  • 生物毒性在线分析仪:监测水体毒性的利器
  • english-13-word-25-12-11 ,get down to business 言归正传 , peripheral devices 从属设备【蓝牙主机host从机Peripheral】
  • 3倍效率!用AI自动修复Vue属性传递问题
  • OpenJob完全指南:如何快速上手高性能分布式任务调度框架
  • 基于密集型复杂城市场景下求解无人机三维路径规划的Q-learning 算法研究附Matlab代码
  • vnpy可视化技术终极指南:从零构建专业K线图表交易界面