Create a CLI tool with Node: a simple example

Let's build the simplest CLI tool; create a folder called HelloWorld and include 2 files:

├── HelloWorld
|   ├── index.js
|   ├── package.json

Configure index.js, adding a shebang at the top to configure the file as a script:

#!/usr/bin/env node

console.log('Hello world! 🦄🦄🦄');

Now configure package.json and set the bin field with the name of the command that you want to execute:

  "name": "helloworld",
  "version": "0.0.1",
  "description": "🦄 A simple package that prints a useless hello world",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node index.js"
  "bin": {
    "hello": "index.js"
  "author": "Erik Martín Jordán",
  "license": "MIT"

From the HelloWorld folder, link the package to test it:

npm link

From the CLI, run:

> hello
Hello world! 🦄🦄🦄

That's it! If you wish, you could publish the package to npm, running npm publish, but be aware that the package name needs to be available.

Hi, I'm Erik, an engineer from Barcelona. If you like the post or have any comments, say hi.