Commander.js is a popular library for building command-line interfaces (CLIs) in Node.js. It simplifies the process of parsing command-line arguments and creating structured, user-friendly command-line tools. Here's a step-by-step guide on how to create a simple command-line tool using Commander.js:
Initialize your Node.js project:
Make sure you have Node.js installed on your machine. Create a new directory for your project and navigate into it using the terminal. Run the following commands to initialize a new Node.js project:
bashnpm init -y
Install Commander.js:
Install the Commander.js library using npm:
bashnpm install commander
Create your CLI script:
Create a new JavaScript file (e.g., cli.js
) and open it in a code editor. This script will define and configure your command-line tool.
javascript// cli.js
const { program } = require('commander');
program.version('1.0.0');
// Define your command and options
program
.command('greet <name>')
.description('Greet someone')
.action((name) => {
console.log(`Hello, ${name}!`);
});
// Parse command-line arguments
program.parse(process.argv);
Add executable permission:
Make your script executable by adding a shebang line at the top of the file and providing execute permissions. Open your terminal and run:
bashchmod +x cli.js
Run your CLI:
Execute your CLI script with the following command:
bash./cli.js greet John
This should output: Hello, John!
Add more features:
You can extend your CLI by adding more commands, options, and handling various scenarios. Here's an example of adding an optional --uppercase
flag:
javascript// cli.js
const { program } = require('commander');
program.version('1.0.0');
program
.command('greet <name>')
.description('Greet someone')
.option('-u, --uppercase', 'Print name in uppercase')
.action((name, options) => {
const greeting = `Hello, ${options.uppercase ? name.toUpperCase() : name}!`;
console.log(greeting);
});
program.parse(process.argv);
Run the updated script with:
bash./cli.js greet John --uppercase
This should output: Hello, JOHN!
Feel free to customize your CLI according to your needs, adding more commands, options, and logic. The Commander.js documentation (https://github.com/tj/commander.js/) is a valuable resource for exploring additional features and advanced configurations.