optimo
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseoptimo
optimo
optimooptimoPrerequisites
前置依赖
optimoPATHRequired by format:
- all ImageMagick-backed formats:
magick - SVG pipeline:
svgo - JPEG second pass: or
mozjpegtranjpegtran - GIF second pass:
gifsicle
optimoPATH按格式划分的依赖要求:
- 所有基于ImageMagick的格式:
magick - SVG处理流程:
svgo - JPEG二次处理:或
mozjpegtranjpegtran - GIF二次处理:
gifsicle
Quick Start (CLI)
快速开始(CLI)
Use for one-off runs:
npxbash
npx -y optimo public/mediaOptimize a single file:
bash
npx -y optimo public/media/banner.pngRun a dry run (no file changes):
bash
npx -y optimo public/media/banner.png --dry-run # long version
npx -y optimo public/media/banner.png -d # short versionEnable lossy mode:
bash
npx -y optimo public/media/banner.jpg --losy # long version
npx -y optimo public/media/banner.jpg -l # short versionConvert and optimize to a new format:
bash
npx -y optimo public/media/banner.png --format jpeg # long version
npx -y optimo public/media/banner.png -f jpeg # short versionResize by percentage:
bash
npx -y optimo public/media/banner.png --resize 50% # long version
npx -y optimo public/media/banner.png -r 50% # short versionResize to a target max file size:
bash
npx -y optimo public/media/banner.png --resize 100kB # long version
npx -y optimo public/media/banner.png -r 100kB # short versionResize by width:
bash
npx -y optimo public/media/banner.png --resize w960 # long version
npx -y optimo public/media/banner.png -r w960 # short versionResize by height:
bash
npx -y optimo public/media/banner.png --resize h480 # long version
npx -y optimo public/media/banner.png -r h480 # short versionEnable verbose debugging:
bash
npx -y optimo public/media/banner.heic --dry-run --verbose # long version
npx -y optimo public/media/banner.heic -d -v # short version使用进行一次性运行:
npxbash
npx -y optimo public/media优化单个文件:
bash
npx -y optimo public/media/banner.png执行试运行(不修改文件):
bash
npx -y optimo public/media/banner.png --dry-run # 完整写法
npx -y optimo public/media/banner.png -d # 简写启用有损模式:
bash
npx -y optimo public/media/banner.jpg --losy # 完整写法
npx -y optimo public/media/banner.jpg -l # 简写转换并优化为新格式:
bash
npx -y optimo public/media/banner.png --format jpeg # 完整写法
npx -y optimo public/media/banner.png -f jpeg # 简写按比例调整大小:
bash
npx -y optimo public/media/banner.png --resize 50% # 完整写法
npx -y optimo public/media/banner.png -r 50% # 简写调整至目标最大文件体积:
bash
npx -y optimo public/media/banner.png --resize 100kB # 完整写法
npx -y optimo public/media/banner.png -r 100kB # 简写按宽度调整大小:
bash
npx -y optimo public/media/banner.png --resize w960 # 完整写法
npx -y optimo public/media/banner.png -r w960 # 简写按高度调整大小:
bash
npx -y optimo public/media/banner.png --resize h480 # 完整写法
npx -y optimo public/media/banner.png -r h480 # 简写启用详细调试模式:
bash
npx -y optimo public/media/banner.heic --dry-run --verbose # 完整写法
npx -y optimo public/media/banner.heic -d -v # 简写Pipelines
处理流程
optimo- ->
.pngmagick.png - ->
.svgsvgo.svg - ->
.jpg/.jpeg+magick.jpg/jpegmozjpegtran.jpg/jpeg - ->
.gif+magick.gifgifsicle.gif - other formats (,
webp,avif,heic,heif, etc.) ->jxlmagick.<format>
Mode behavior:
- default: lossless-first pipeline
- /
--losy: lossy + lossless pass where supported-l
optimo- ->
.pngmagick.png - ->
.svgsvgo.svg - ->
.jpg/.jpeg+magick.jpg/jpegmozjpegtran.jpg/jpeg - ->
.gif+magick.gifgifsicle.gif - 其他格式(、
webp、avif、heic、heif等)->jxlmagick.<format>
模式行为:
- 默认:优先无损压缩的流程
- /
--losy:在支持的格式上先执行有损压缩,再执行无损压缩-l
Recommended Workflow
推荐工作流
- Start with to confirm target files.
--dry-run - Run optimization on one file first, then scale to directories.
- Use only when conversion is intended.
--format - Use only when explicit dimension/size control is required.
--resize - Use when diagnosing unsupported files or binary/flag issues.
--verbose - Verify outputs in version control before committing.
- 先使用确认目标文件。
--dry-run - 先对单个文件执行优化,再扩展到目录。
- 仅当需要转换格式时才使用选项。
--format - 仅当需要精确控制尺寸或体积时才使用选项。
--resize - 当诊断不支持的文件或二进制文件/参数问题时,使用选项。
--verbose - 在提交前,通过版本控制验证输出文件。
CLI Options
CLI选项
- ,
-d: Show what would change without writing files.--dry-run - ,
-f: Convert output format (--format,jpeg,webp, etc.).avif - ,
-l: Enable lossy + lossless pass.--losy - ,
-r: Resize using percentage (--resize), max file size (50%), width (100kB), or height (w960).h480 - ,
-s: Suppress per-file logs.--silent - ,
-v: Print debug logs (pipeline selection, command execution, and errors).--verbose
- ,
-d:显示将会发生的变更,但不写入文件。--dry-run - ,
-f:转换输出格式(--format、jpeg、webp等)。avif - ,
-l:启用有损+无损压缩流程。--losy - ,
-r:按比例(--resize)、最大文件体积(50%)、宽度(100kB)或高度(w960)调整大小。h480 - ,
-s:抑制每个文件的日志输出。--silent - ,
-v:打印调试日志(流程选择、命令执行及错误信息)。--verbose
Programmatic API
程序化API
js
const optimo = require('optimo')
await optimo.file('/absolute/path/image.jpg', {
dryRun: false,
losy: false,
format: 'webp',
resize: '50%',
onLogs: console.log
})
await optimo.file('/absolute/path/image.jpg', {
resize: '100kB',
onLogs: console.log
})
await optimo.file('/absolute/path/image.jpg', {
resize: 'w960',
onLogs: console.log
})
const result = await optimo.dir('/absolute/path/images')
console.log(result)
// { originalSize, optimizedSize, savings }js
const optimo = require('optimo')
await optimo.file('/absolute/path/image.jpg', {
dryRun: false,
losy: false,
format: 'webp',
resize: '50%',
onLogs: console.log
})
await optimo.file('/absolute/path/image.jpg', {
resize: '100kB',
onLogs: console.log
})
await optimo.file('/absolute/path/image.jpg', {
resize: 'w960',
onLogs: console.log
})
const result = await optimo.dir('/absolute/path/images')
console.log(result)
// { originalSize, optimizedSize, savings }Behavior Notes
行为说明
- For non-conversion runs, if the optimized file is not smaller, the original file is kept.
- During conversion, output uses the new extension and the original source file is removed (unless ).
--dry-run - Hidden files and folders (names starting with ) are skipped in directory mode.
. - Unsupported files are reported as and ignored.
[unsupported]
- 在未转换格式的运行中,如果优化后的文件体积没有更小,则保留原文件。
- 在转换格式时,输出文件会使用新的扩展名,原文件会被删除(除非使用)。
--dry-run - 在目录模式下,会跳过隐藏文件和文件夹(名称以开头的)。
. - 不支持的文件会被标记为并被忽略。
[unsupported]