optimize-images-cli
v1.0.3
Published
A CLI tool for compressing and optimizing images.
Maintainers
Readme
Optimize Images CLI
Optimize Images CLI is a powerful and flexible command-line tool for compressing, resizing, and converting images. It supports modern image formats like WebP and AVIF, making it easy to optimize images for web and app development.
📚 Table of Contents
- Features
- Installation
- Usage
- Examples
- Directory Structure
- Requirements
- Tips
- License
- Contributing
- Feedback and Support
🚀 Features
- Convert images to formats like JPEG, PNG, WebP, and AVIF.
- Resize images with custom dimensions while maintaining aspect ratio.
- Recursive optimization for nested directories.
- Watch mode for real-time image optimization.
- Generate detailed optimization reports.
🛠️ Installation
You can install the CLI globally using npm:
npm install -g optimize-images-cli🔧 Usage
Run the CLI with the following basic syntax:
optimize-images <input> [options]Options
| Option | Description | Default |
|---------------------|--------------------------------------------------------|------------------|
| --output | Output directory for optimized images | ./optimized |
| --quality <number>| Image quality (1-100) | 80 |
| --format <type> | Convert images to a specific format (jpeg, png, webp, avif) | Preserves original |
| --width <number> | Maximum width of images | No resizing |
| --height <number> | Maximum height of images | No resizing |
| --watch | Watch directory for changes and optimize dynamically | false |
| --report | Generate a detailed optimization report | false |
📖 Examples
1. Basic Optimization
Optimize all images in the ./images directory and save them in ./optimized:
optimize-images ./images --output ./optimized --quality 802. Convert Images to WebP
Convert all images to the WebP format:
optimize-images ./images --output ./optimized --format webp3. Resize Images
Resize images to fit within a maximum of 800x600 pixels:
optimize-images ./images --output ./optimized --width 800 --height 6004. Generate an Optimization Report
Generate a report showing original and optimized file sizes:
optimize-images ./images --output ./optimized --quality 75 --report5. Watch Mode
Monitor a directory for changes and optimize images dynamically:
optimize-images ./images --output ./optimized --watch🌲 Directory Structure
The tool preserves the original directory structure in the output folder. For example:
Input Directory:
images/
├── photo1.jpg
├── photo2.png
└── nested/
└── photo3.jpegOutput Directory:
optimized/
├── photo1.webp
├── photo2.webp
└── nested/
└── photo3.webp🧰 Requirements
- Node.js (v14.0.0 or higher)
- NPM (v7.0.0 or higher)
💡 Tips
- Use the
--watchoption for real-time optimization during development. - Combine resizing (
--width,--height) with format conversion (--format) for maximum optimization.
⚠️ Troubleshooting
"Command not found"
If you encounter this error, make sure the CLI is installed globally:
npm install -g optimize-images-cli📜 License
This project is licensed under the MIT License.
🤝 Contributing
We welcome contributions! Please follow these steps:
- Fork the repository.
- Create a new branch (
git checkout -b feature-name). - Commit your changes (
git commit -m "Add feature"). - Push to the branch (
git push origin feature-name). - Open a pull request.
🚀 Roadmap
Here are some planned features for future releases:
- Support for GIF and TIFF formats.
- Multi-threaded optimization for faster performance.
- Export logs to a file with
--logoption. - Config file support for default options (
optimize-images.config.json).
Feel free to suggest new features by opening an issue.
💬 Feedback and Support
If you encounter any issues or have suggestions, feel free to open an issue on GitHub or contact at [email protected].
🔒 Security
If you find any security issues, please report them responsibly by contacting [email protected]. We will address them promptly.
❤️ Support
If you like this project and want to support its development, consider:
- ⭐ Starring this repository on GitHub.
- ☕ Buying me a coffee.
- 💬 Sharing this tool with your network.
Your support keeps this project alive and growing!
