Skip to content
Simple command line argument parser for node.js
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


NPM Version NPM Downloads Build status Coveralls coverage

The simplest command-line parsing utility for node.js

Why create another library for this?

All of the existing libraries (i.e. commander or nomnom) require you to specify upfront what options you expect.

Clarg simply returns you a full set of arguments it found allowing you to bind everything in any way you want, anywhere you want.

No questions asked, no prescribed way of doing things. Just a simple object.


Simply import clarg anywhere in your code and it will output an object.

You don't have to specify any options upfront, just require this module and execute it.

It doesn't matter where in code you run it - you will always get the same result which is really just a broken down list of arguments and options passed to the process.

It supports options specified with single dashes, double dashes and their values after a space or an equal sign.

The only thing that matters is the order: first you specify arguments, after the first dash has been spotted everything gets treated as an option.


Running the script below with these arguments node test.js start countdown --format=long -detach -parse=yes will produce an object like this:

  args: [ 'start', 'countdown' ],
  opts: { format: 'long', detach: true, parse: 'yes' },
  raw: [ 'start', 'countdown', '--format=long', '-detach', '-parse=yes' ]
You can’t perform that action at this time.