yargs-parser

Build Status Coverage Status NPM version Windows Tests Standard Version

The mighty option parser used by yargs.

visit the yargs website for more examples, and thorough usage instructions.

Example

sh npm i yargs-parser --save

js var argv = require('yargs-parser')(process.argv.slice(2)) console.log(argv)

sh node example.js --foo=33 --bar hello { _: [], foo: 33, bar: 'hello' }

or parse a string!

js var argv = require('./')('--foo=99 --bar=33') console.log(argv)

sh { _: [], foo: 99, bar: 33 }

Convert an array of mixed types before passing to yargs-parser:

js var parse = require('yargs-parser') parse(['-f', 11, '--zoom', 55].join(' ')) // <-- array to string parse(['-f', 11, '--zoom', 55].map(String)) // <-- array of strings

API

require('yargs-parser')(args, opts={})

Parses command line arguments returning a simple mapping of keys and values.

expects:

returns:

require('yargs-parser').detailed(args, opts={})

Parses a command line string, returning detailed information required by the yargs engine.

expects:

returns:

Configuration

The yargs-parser applies several automated transformations on the keys provided in args. These features can be turned on and off using the configuration field of opts.

js var parsed = parser(['--no-dice'], { configuration: { 'boolean-negation': false } })

short option groups

Should a group of short-options be treated as boolean flags?

sh node example.js -abc { _: [], a: true, b: true, c: true }

if disabled:

sh node example.js -abc { _: [], abc: true }

camel-case expansion

Should hyphenated arguments be expanded into camel-case aliases?

sh node example.js --foo-bar { _: [], 'foo-bar': true, fooBar: true }

if disabled:

sh node example.js --foo-bar { _: [], 'foo-bar': true }

dot-notation

Should keys that contain . be treated as objects?

sh node example.js --foo.bar { _: [], foo: { bar: true } }

if disabled:

sh node example.js --foo.bar { _: [], "foo.bar": true }

parse numbers

Should keys that look like numbers be treated as such?

sh node example.js --foo=99.3 { _: [], foo: 99.3 }

if disabled:

sh node example.js --foo=99.3 { _: [], foo: "99.3" }

boolean negation

Should variables prefixed with --no be treated as negations?

sh node example.js --no-foo { _: [], foo: false }

if disabled:

sh node example.js --no-foo { _: [], "no-foo": true }

combine arrays

Should arrays be combined when provided by both command line arguments and a configuration file.

duplicate arguments array

Should arguments be coerced into an array when duplicated:

sh node example.js -x 1 -x 2 { _: [], x: [1, 2] }

if disabled:

sh node example.js -x 1 -x 2 { _: [], x: 2 }

flatten duplicate arrays

Should array arguments be coerced into a single array when duplicated:

sh node example.js -x 1 2 -x 3 4 { _: [], x: [1, 2, 3, 4] }

if disabled:

sh node example.js -x 1 2 -x 3 4 { _: [], x: [[1, 2], [3, 4]] }

negation prefix

The prefix to use for negated boolean variables.

sh node example.js --no-foo { _: [], foo: false }

if set to quux:

sh node example.js --quuxfoo { _: [], foo: false }

populate --

Should unparsed flags be stored in -- or _.

If disabled:

sh node example.js a -b -- x y { _: [ 'a', 'x', 'y' ], b: true }

If enabled:

sh node example.js a -b -- x y { _: [ 'a' ], '--': [ 'x', 'y' ], b: true }

Special Thanks

The yargs project evolves from optimist and minimist. It owes its existence to a lot of James Halliday's hard work. Thanks substack beep boop \o/

License

ISC