核心用法
baoyu-compress-image 是一款跨平台图片压缩技能,通过 TypeScript/Bun 运行时驱动,内置四层工具链自动降级策略:优先调用 macOS 原生 sips,其次 cwebp 官方工具,再 fallback 至 ImageMagick,最终使用 Sharp Node.js 库兜底。用户仅需指定输入路径,即可一键完成单文件或整目录递归压缩。
CLI 设计简洁直观:
bun /path/to/scripts/main.ts <input> [options]
关键参数包括格式指定(-f webp|png|jpeg)、质量调节(-q 0-100,默认 80)、保留原文件(-k)、递归子目录(-r)及结构化 JSON 输出(--json)。输出路径默认与原文件同目录,仅扩展名变更。
显著优点
1. 零配置开箱即用:智能探测系统已安装工具,无需手动安装依赖链
2. 多层级容错机制:四层工具链确保在 macOS/Linux/Windows 均有可行方案
3. 现代格式优先:默认输出 WebP,兼顾压缩率与浏览器兼容性
4. 工程化友好:支持项目级、用户级、XDG 配置三级 EXTEND.md 覆盖,便于团队统一规范
潜在局限
- 运行时依赖:需预装 Bun 或允许通过 npx 动态获取,纯净环境中仍需首次准备
- 无 GUI 交互:纯 CLI 工具,对非技术用户存在学习成本
- 格式支持边界:输入格式受限于底层工具链(如 sips 不支持某些 RAW 变体)
- 无在线压缩:纯本地处理,无法利用云端算力处理超大文件
适合人群
- 前端开发者:构建流程中自动化图片优化
- 运维/DevOps:批量处理服务器静态资源
- 内容创作者:本地快速压缩素材上传至平台
- CI/CD 流水线:轻量级容器内集成
常规风险
| 场景 | 说明 |
|------|------|
| 质量过度压缩 | 低于 60 的 quality 可能导致视觉劣化,建议预览确认 |
| 源文件覆盖 | 默认 `-k false` 会直接替换,重要素材建议显式启用 `--keep` |
| 递归误操作 | `-r` 处理大目录时可能耗时显著,建议先 `--json` dry-run 评估 |
| 工具链缺失 | 若四层工具均未安装,脚本将报错退出,需前置依赖检查 |
整体而言,该技能以"约定优于配置"为设计理念,是本地图片资源优化的实用利器。