minify-pic-cli
Version:
一个简单易用的图片批量压缩命令行工具,支持 PNG、JPEG、GIF 格式,适合前端和设计师快速优化图片体积。
150 lines (109 loc) • 3.67 kB
Markdown
# Minify Pic CLI - 图片批量压缩工具
一个简单易用的图片批量压缩命令行工具,支持 PNG、JPEG、GIF 格式,适合前端和设计师快速优化图片体积。
## 功能特性
- 🖼️ 支持多种图片格式:PNG、JPEG、GIF
- 📁 批量处理目录及子目录中的所有图片
- ⚙️ 可自定义压缩质量和参数
- 🚫 支持排除指定目录
- 📊 显示压缩前后文件大小对比
- 🎯 保持原有目录结构
## 安装
### 全局安装
```bash
# 使用 pnpm 安装
pnpm install -g minify-pic-cli
# 或使用 npm
npm install -g minify-pic-cli
```
## 使用方法
### 基本用法
```bash
# 压缩当前目录的所有图片
mpic
# 或直接运行
node index.js
```
### 命令行选项
```bash
mpic [选项]
选项:
-d, --dir <dir> 需要压缩的目录 (默认: 当前目录)
-o, --output <output> 输出目录 (默认: ./output)
-q, --quality <quality> 压缩质量 0-100 (默认: 80)
-g, --gif-colours <colours> GIF调色板最大数量 2-256 (默认: 128)
-b, --black-dirs <dirs> 排除的子文件夹名称,逗号分隔 (默认: "no")
-v, --version 显示版本号
-h, --help 显示帮助信息
```
### 使用示例
```bash
# 压缩指定目录的图片,输出到 compressed 文件夹
mpic -d ./images -o ./compressed
# 设置压缩质量为 90
mpic -q 90
# 排除 node_modules 和 .git 目录
mpic -b "node_modules,.git"
# 设置 GIF 调色板为 64 色
mpic -g 64
# 组合使用多个选项
mpic -d ./src/assets -o ./dist/assets -q 85 -b "node_modules,.git"
```
## 支持的图片格式
- **PNG**: 支持透明度,适合图标和简单图形
- **JPEG**: 适合照片和复杂图像
- **GIF**: 支持动画,可调整调色板颜色数量
## 配置说明
### 压缩质量 (quality)
- 范围:0-100
- 默认:80
- 数值越高,质量越好,文件越大
- 建议:80-90 为最佳平衡点
### GIF 调色板颜色数 (gif-colours)
- 范围:2-256
- 默认:128
- 颜色数越少,文件越小,但可能影响视觉效果
- 建议:64-128 为常用范围
### 排除目录 (black-dirs)
- 支持多个目录,用逗号分隔
- 默认排除 "no" 目录
- 常用排除目录:`node_modules,.git,dist,build`
## 输出说明
工具会在控制台显示:
- 当前工作目录
- 压缩进度和结果
- 文件大小变化对比
- 最终输出目录
示例输出:
```
当前目录路径为: /path/to/your/project
是否需要压缩当前目录的所有图片?Y/N:y
压缩完成 [大小变化: 2.5MB ---->>>> 1.2MB] /path/to/output/image1.jpg
压缩完成 [大小变化: 800KB ---->>>> 400KB] /path/to/output/image2.png
压缩任务全部完成,已输出至 /path/to/output
```
## 注意事项
1. **备份原文件**:工具会创建新的压缩文件,不会覆盖原文件
2. **输出目录**:默认输出到 `./output` 目录,会自动创建
3. **目录结构**:压缩后会保持原有的目录结构
4. **大文件处理**:对于大文件,压缩可能需要一些时间
5. **权限问题**:确保对目标目录有写入权限
## 技术栈
- **Node.js**: 运行环境
- **Sharp**: 高性能图片处理库
- **Commander.js**: 命令行参数解析
- **Readline**: 用户交互
## 开发
```bash
# 安装依赖
pnpm install
# 运行开发版本
node index.js
```
## 许可证
ISC
## 更新日志
### v1.0.2
- 初始版本发布
- 支持 PNG、JPEG、GIF 格式压缩
- 命令行参数支持
- 批量处理功能