UNPKG

@the-node-forge/image-resizer-cli

Version:

A fast and lightweight CLI tool for resizing, compressing, and converting images in multiple formats (JPEG, PNG, WebP, etc.). Supports batch processing, custom dimensions, and high-quality optimization using Sharp. Ideal for developers, designers, and aut

77 lines (76 loc) 2.9 kB
#!/usr/bin/env node "use strict"; /* eslint-disable @typescript-eslint/no-require-imports */ const { program } = require('commander'); const chalk = require('chalk'); const { resizeImage, convertImage, batchResize, compressImage, getImageInfo, } = require('../resizer'); program .name('img-resizer') .description('CLI tool for resizing images') .version('1.0.0'); program .command('resize <input> <output>') .description('Resize an image') .option('-w, --width <number>', 'Width in pixels', parseInt) .option('-h, --height <number>', 'Height in pixels', parseInt) .action(async (input, output, options) => { try { await resizeImage(input, output, options.width, options.height); console.log(chalk.green(`✅ Image resized successfully!`)); } catch (err) { console.error(chalk.red(`❌ Error: ${err instanceof Error ? err.message : 'Unknown error'}`)); } }); program .command('convert <input> <output>') .description('Convert an image to a different format (e.g., PNG to JPG)') .action(async (input, output) => { try { await convertImage(input, output); console.log(chalk.green(`✅ Image converted successfully: ${output}`)); } catch (err) { console.error(chalk.red(`❌ Error: ${err instanceof Error ? err.message : 'Unknown error'}`)); } }); program .command('batch-resize <inputDir> <outputDir>') .description('Resize all images in a directory') .option('-w, --width <number>', 'Width in pixels', parseInt) .option('-h, --height <number>', 'Height in pixels', parseInt) .action(async (inputDir, outputDir, options) => { try { await batchResize(inputDir, outputDir, options.width, options.height); console.log(chalk.green(`✅ All images resized successfully!`)); } catch (err) { console.error(chalk.red(`❌ Error: ${err instanceof Error ? err.message : 'Unknown error'}`)); } }); program .command('compress <input> <output>') .description('Compress an image while maintaining quality') .option('-q, --quality <number>', 'Quality (1-100)', parseInt) .action(async (input, output, options) => { try { await compressImage(input, output, options.quality || 80); console.log(chalk.green(`✅ Image compressed successfully: ${output}`)); } catch (err) { console.error(chalk.red(`❌ Error: ${err instanceof Error ? err.message : 'Unknown error'}`)); } }); program .command('info <input>') .description('Get metadata of an image') .action(async (input) => { try { const metadata = await getImageInfo(input); console.log(chalk.yellow(`📷 Image Info:`), metadata); } catch (err) { console.error(chalk.red(`❌ Error: ${err instanceof Error ? err.message : 'Unknown error'}`)); } }); program.parse(process.argv);