So in this post I will be going over just the basics of making a simple node CLI tool that is just a hello world starting point, but might not get into depth beyond that when it comes to things like option parsing.
To make a CLI tool with node.js I would start by making a new folder in a place where I get projects done such as the home folder, or my documents folder, or what have you. At which point I would make it the current working directory, and set up a new node project by calling npm init to make my package.json file for the new project.
The next steps will involve setting a bin name for the command line tool, and start a main index.js file for it, so lets get to doing that.
One of the most important steps to making a script global is setting the name that is to be called from the command line, and the script to be called when doing so. This is done by adding a bin entry to package.json file of my project.
So insert this anywhere into the package.json file.
This means that I will be calling my tool like this
and a file called index.js is what will be called when doing so. I do what I can to make sure that I am not using a name that is all ready in use with the operating system that I am using by taking the time to be familiar with what is all ready there. It also stands to reason that it would be a good idea to make sure that I am not using a name that is used by another popular project in general when it comes to the possibly that other people might use my command line tool.
This is just a getting started post after all, in a real project I would want to have at least a few dependencies to work with that have to do with things like option parsing and so forth. However I do not want to get to deep into those kinds of things here, and the kind of packages I would add would change from one project to another depending on what the tool does.
So now that I have my starting npm package folder, a binary name set in the package.json file, and a starting file to run for the command, the next thing to do is to make it a global command.
So while still in the working directory of the project I just need to use npm to install the project globally by calling npm install and making sure to use the global flag like so:
I will not get into detail with it here, but I have written a post on a dependency that I use to help with option parsing called nopt. If you want to go vanilla process.argv is what is of interest when it comes to doing something involving arguments accepted from the CLI.
For this I have found chalk be sure to check that out if you want to do anything with color in the console.
I have wrote a post on an npm package called node-dir. It allows for working with the content of a bunch of files that are placed in a complex file structurer. I can set a match pattern using regular expressions, and I find it more useful then just using readDir in the fs module of node itself.
Maybe I will make some more examples that do something a bit more interesting. For now I guess I will just reference some posts that I have written before that are relevant to this sort of thing. Of course I have many posts on node.js that are worth checking out.