A fast CLI tool for batch compressing and converting images to specified format.
- ✅ Converts JPEG, JPG, and PNG images to specified format
- ✅ Automatic compression and resizing
- ✅ Configurable quality and dimensions
- ✅ Custom output directory support
- ✅ Progress tracking during compression
- ✅ Comprehensive input validation
npm install -g compressor-cligit clone <repo-url>
cd compressor-cli
npm install
npm run build
npm linkcomp-cli <input-directory> [options]Example:
# Basic usage (default: quality 80, width 1080px, output ./output)
comp-cli ./images
# Custom quality and width
comp-cli ./images -q 90 -w 1920
# Custom output directory
comp-cli ./images -o ./compressed
# All options combined
comp-cli ./images -q 70 -w 800 -o ./dist/images -f avif| Flag | Long Form | Description | Default |
|---|---|---|---|
-q |
--quality |
WebP quality (1-100) | 80 |
-w |
--width |
Target width in pixels | 1080 |
-f |
--format |
Target format | webp |
-o |
--output |
Output directory path | ./output |
-h |
--help |
Show help information | - |
-v |
--version |
Show current version | - |
Input: .jpeg, .jpg, .png
Output: target_format
- Validates the input directory exists and contains supported images
- Creates the output directory if it doesn't exist
- Compresses each image to specified format with specified settings
- Resizes images to the target width (maintains aspect ratio)
- Reports progress and completion status
comp-cli ./photos -w 400 -q 70 -o ./thumbnailscomp-cli ./originals -q 95 -w 2560 -o ./webpcomp-cli ./imagesnpm run dev # Run with tsx (development)
npm run build # Compile TypeScript
npm run link # Build and link globally
npm run unlink # Unlink from global- Add support for additional formats (GIF, BMP, TIFF)
- Implement percentage-based resizing
- Add concurrency control for large batches
- Support for multiple output formats
- Dry-run mode to preview operations
- Configuration file support
- Unit tests
ISC
Dielan Garve