Yargs Parser

Published: Oct 12, 2018

Last updated: Oct 12, 2018

Yargs parser is an incredibly basic option parser for the command line.

This is a basic library I tend to use a lot for any of my CLI tools that I am building out.

Installation

# NPM npm install yargs-parser --save # or yarn yarn add yargs-parser

Example code

The main use case we will use is for options and arguments passed from the command line.

First, create an index.js file and require the following:

var argv = require("yargs-parser")(process.argv.slice(2)); console.log(argv);

Now we can already run the script from the command line, pass options and arguments and see what happens:

node index.js hello --foo=33 --bar world # prints { _: ['hello'], foo: 33, bar: 'world' }

If we disect the above command, we note that anything passed after node index.js becomes an accessible argument from our argv object under argv._. All the other options passed as the object key as a property of argv with the corresponding value passed.

Taking all this into account, the above is now accesible as follows:

var argv = require("yargs-parser")(process.argv.slice(2)); console.log(argv._[0]); // hello console.log(argv.foo); // 33 console.log(argv.bar); // world

Great! Now we can start building our Node.js commandline tools.

For now, let's just set up a basic example of how you could run a command line tool that just logs out some basic information based on the first argument passed and options.

var argv = require("yargs-parser")(process.argv.slice(2)); const help = ` Usage $ node index.js <action> <option> Action --- hello [name] Echoes hello. Defaults to "world". friends Echoes what they are Examples $ node index.js hello $ node index.js hello --name clark $ node index.js friends `; const hello = () => { const name = argv.name ? argv.name : "clark"; console.log(`hello ${name}`); }; const friends = () => console.log("are like flowers"); /** * Run a function based on the argument provided. * */ const main = async () => { try { switch (argv._[0]) { case "hello": hello(); break; case "friends": friends(); break; default: console.log(help); break; } } catch (err) { console.error(err); } }; // Run the program main();

Now we can run our tool above!

node index.js hello # prints hello clark node index.js hello --name tim # prints hello tim node index.js hello --name=bob # prints hello bob node index.js friends # prints are like flowers

Get creative and start building some useful Node.js CLI tools for your workflow.

Code can be found on my Github.

Hello is a series that is about short, sharp examples. Read more on this series to find small gems to add your toolset.

Personal image

Dennis O'Keeffe

Byron Bay, Australia

Share this post

Recommended articles

Dennis O'Keeffe

2020-present Dennis O'Keeffe.

All Rights Reserved.