Open PortfolioOpen Portfolio.
โ† Back to Blog

Building a CLI Tool with Node.js and Commander

April 12, 2026at 2:00 PM UTCBy Pocket Portfolio TeamTechnology
Building a CLI Tool with Node.js and Commander
#node.js#cli#tool#commander

Building a Command Line Interface (CLI) tool can significantly enhance productivity by automating tasks and improving workflows. In this guide, we will build a simple CLI tool using Node.js and the Commander library, a popular choice for handling command-line arguments.

Problem

Creating a CLI tool from scratch involves dealing with argument parsing, command execution, and user feedback. This can be cumbersome and error-prone if handled manually. Fortunately, Node.js offers an ecosystem that simplifies these tasks, allowing developers to focus on the core functionality of their CLI applications.

Solution with Code

To solve this problem, we will use Node.js along with the Commander library to handle command-line arguments efficiently. Follow the steps below to create your own CLI tool:

Step 1: Set Up Your Node.js Project

First, create a new directory for your project and initialize a Node.js project.

mkdir my-cli-tool
cd my-cli-tool
npm init -y

Step 2: Install Commander

Install the Commander package, which is a lightweight library for handling command-line arguments.

npm install commander

Step 3: Create Your CLI Tool

Create an index.js file and set it up to use Commander to define commands and options.

#!/usr/bin/env node

const { Command } = require('commander');
const program = new Command();

program
  .name('my-cli-tool')
  .description('A simple CLI tool example')
  .version('1.0.0');

program
  .command('greet <name>')
  .description('Greet a user by name')
  .action((name) => {
    console.log(`Hello, ${name}!`);
  });

program.parse(process.argv);

Step 4: Make Your Script Executable

Ensure your script can be executed directly from the command line by adding a shebang at the top of your index.js file (#!/usr/bin/env node) and updating your package.json to include a bin field.

"bin": {
  "my-cli-tool": "./index.js"
}

Step 5: Link Your Tool

Link your tool globally to test it from anywhere on your system.

npm link

Step 6: Run Your CLI Tool

You can now run your CLI tool using:

my-cli-tool greet World

Key Concepts

  • Node.js: A JavaScript runtime built on Chrome's V8 JavaScript engine, ideal for building scalable network applications.
  • Commander: A minimalistic library for creating command-line interfaces, handling arguments, and generating help automatically.
  • Shebang (#!/usr/bin/env node): A special syntax indicating that the script should be executed by Node.js.

By following these steps, you have built a basic CLI tool with Node.js. This serves as a foundation for more complex CLI applications, enabling automation and efficiency in various tasks.

Building a CLI Tool with Node.js and Commander | Open Portfolio Blog | Open Portfolio