0.8.0 • Published 4 months ago
handy-img v0.8.0
handy-img
handy img tool and API
compress Features
- target mozjpeg / webp are supported.
@squoosh/cli
supports more format. - Node.js native addon, better performance than squoosh WASM version.
- batch process, support
--files
glob or dir mode--dir
- parallel compress. set your
UV_THREADPOOL_SIZE=64
(see this) and handy-img will use this as concurrency.
Install
$ pnpm add -g handy-img
or invoke without install
# pnpm, recommend
pnpm dlx handy-img
# or yarn 2
yarn dlx handy-img
# or npx/pnpx
npx handy-img
pnpx handy-img
cli
just type himg
or handy-img
$ himg
himg <命令>
命令:
himg compress <file> compress file [aliases: c]
himg info <file> show info for file [aliases: i]
选项:
--version 显示版本号 [布尔]
--help 显示帮助信息 [布尔]
缺少 non-option 参数:传入了 0 个, 至少需要 1 个
himg compress
or himg c
$ himg c -h
Compress img
$ handy-img compress
━━━ Options ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
-f,--files #0 files as input
--ignore-case ignore case for -f,--files, default true
--glob-cwd #0 cwd used in glob
-t,--tokens,--show-tokens show available tokens
-o,--output #0 output patterns
--codec #0 Allowed codec: `mozjpeg` or `webp`
--metadata keep metadata(only available with --codec webp)
-q,--quality #0 quality
-d,--dir #0 compress whole dir, and output to dir_compressed
--dir-suffix #0 suffix to append to original dir name when using -d,--dir mode
-y,--yes exec commands, default false(only preview commands, aka dry run)
flags
flag | desc | default | remark |
---|---|---|---|
-f,--files | specify input, | glob supported, see globby & fast-glob | |
--ignore-case | ignore case when glob input | true | |
--glob-cwd | cwd of -f,--files provided | pwd | |
-t,--tokens,--show-tokens | show available tokens | help you to decide the -o,--output flag, see below | |
-o,--output | output pattern | ||
--codec | Allowed codec: mozjpeg or webp or mozjpeg-raw | mozjpeg | |
--metadata | keep metadata(not available with --codec mozjpeg-raw ) | true | keep exif data |
-q,--quality | quality | 80 | encode quality, 0-100 |
-d,--dir | compress whole dir, and output to dir_compressed | ||
--dir-suffix | suffix to append to original dir name when using -d,--dir mode | _compressed | |
-O,--other,--other-files | how to handle other files in dir mode | move or copy none img files to newly created dir | |
-y,--yes | exec commands, default false(only preview commands, aka dry run) | false |
Usage
-d
, use dir mode
himg c -d ./your-dir-here -y
glob all imgs in the dir you provided, and output to a new directory, which name is original name + dir suffix and img will keep same structure.
# example
himg c -d dir -q 85 -y
about -y,--yes
without this option, you will see what input will be processed and what file will be generated. but the compress action will not really execute. aka dry run.
--------------------------------------------------------------------------------
current previewing commands. After comfirmed, append -y or --yes flag to execute
--------------------------------------------------------------------------------
it's like a safety guard for a gun
-f,--files
, single or multiple files
1.decide input
2.then use -t,--tokens,--show-tokens
show available tokens
3.write your output pattern & preview
example pattern himg c -f './*.jpg' -t -o ':dir/:name_compressed.:ext'
example pattern himg c -f './*.jpg' -t -o ':dir/compressed/:name.:ext'
4.use -y,--yes
to execute
Which codec & quality should I choose ?
See
- https://tsev.dev/posts/2023-11-10-should-avif-be-the-dominant-image-format/
- AND https://github.com/magicdawn/magicdawn/issues/170#issuecomment-1858817900
Changelog
License
the MIT License http://magicdawn.mit-license.org