CLI Tool Scaffolder
Prerequisites & Dependencies
- Node.js 18+ with npm or pnpm
- CLI framework:
npm i commander or npm i yargs (choose one)
- Optional:
npm iora for spinners, chalk for terminal colors, inquirer for interactive prompts
Execution Steps
- Initialize the project:
npm init -y and npm i commander chalkora inquirer
- Define the command structure:
program.command('<command>').description('<desc>') or yargs.argv._
- Add supported flags/options:
--name, -e, --verbose, etc., with description and default values
- Implement argument validation: check required flags, parse types (
string, number, boolean), show help on --help
- Add runtime UI enhancements:
ora spinner for long operations, chalk colored output, inquirer for confirmation prompts
- Wire a help command:
program.help() or yargs.showHelp(), and output a README.md or man page
- Publish globally or locally:
npm link for testing, or npm pack / publish to npm registry
// Commander CLI with spinner and color
const { Command } = require('commander');
const { green, bold } = require('chalk');
const ora = require('ora');
const program = new Command();
program
.name('my-tool')
.description('A helpful CLI scaffolder')
.option('-n, --name <string>', 'name to greet', 'world')
.option('-v, --verbose', 'enable verbose output')
.parse();
const args = program.opts();
const spinner = ora(`Hello, ${green(args.name)}!`).start();
setTimeout(() => {
spinner.stop();
console.log(bold('Operation completed successfully!'));
}, 1500);
// Access via: node index.js --name Alice --verbose
1---2name: cli-tool-scaffolder3description: Scaffold interactive command-line interface tools with argument parsing, flags, spinners, and help menus.4---56# CLI Tool Scaffolder78## Prerequisites & Dependencies9- Node.js 18+ with npm or pnpm10- CLI framework: `npm i commander` or `npm i yargs` (choose one)11- Optional: `npm iora` for spinners, `chalk` for terminal colors, `inquirer` for interactive prompts1213## Execution Steps141. Initialize the project: `npm init -y` and `npm i commander chalkora inquirer`152. Define the command structure: `program.command('<command>').description('<desc>')` or `yargs.argv._`163. Add supported flags/options: `--name`, `-e`, `--verbose`, etc., with description and default values174. Implement argument validation: check required flags, parse types (`string`, `number`, `boolean`), show help on `--help`185. Add runtime UI enhancements: `ora` spinner for long operations, `chalk` colored output, `inquirer` for confirmation prompts196. Wire a help command: `program.help()` or `yargs.showHelp()`, and output a `README.md` or `man` page207. Publish globally or locally: `npm link` for testing, or `npm pack` / publish to npm registry2122```javascript23// Commander CLI with spinner and color24const { Command } = require('commander');25const { green, bold } = require('chalk');26const ora = require('ora');2728const program = new Command();29program30 .name('my-tool')31 .description('A helpful CLI scaffolder')32 .option('-n, --name <string>', 'name to greet', 'world')33 .option('-v, --verbose', 'enable verbose output')34 .parse();3536const args = program.opts();37const spinner = ora(`Hello, ${green(args.name)}!`).start();3839setTimeout(() => {40 spinner.stop();41 console.log(bold('Operation completed successfully!'));42}, 1500);4344// Access via: node index.js --name Alice --verbose45```