Package Exports
- mri
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (mri) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
mri 
Quickly scan for CLI flags and arguments
This is a fast and lightweight alternative to minimist and yargs-parser.
It only exists because I find that I usually don't need most of what minimist and yargs-parser have to offer. However, mri is similar enough that it might function as a "drop-in replacement" for you, too!
See Comparisons for more info.
Install
$ npm install --save mriUsage
$ demo-cli --foo --bar=baz -mtv -- hello worldconst mri = require('mri');
const argv = process.argv.slice(2);
mri(argv);
//=> { _: ['hello', 'world'], foo:true, bar:'baz', m:true, t:true, v:true }
mri(argv, { boolean:['bar'] });
//=> { _: ['baz', 'hello', 'world'], foo:true, bar:true, m:true, t:true, v:true }
mri(argv, {
alias: {
b: 'bar',
foo: ['f', 'fuz']
}
});
//=> { _: ['hello', 'world'], foo:true, f:true, fuz:true, b:'baz', bar:'baz', m:true, t:true, v:true }API
mri(args, options)
Return: Object
args
Type: Array
Default: []
An array of arguments to parse. For CLI usage, send process.argv.slice(2). See process.argv for info.
options.alias
Type: Object
Default: {}
An object of keys whose values are Strings or Array<String> of aliases. These will be added to the parsed output with matching values.
options.boolean
Type: Array|String
Default: []
A single key (or array of keys) that should be parsed as Booleans.
options.default
Type: Object
Default: {}
An key:value object of defaults. If a default is provided for a key, its type (typeof) will be used to cast parsed arguments.
mri(['--foo', 'bar']);
//=> { _:[], foo:'bar' }
mri(['--foo', 'bar'], {
default: { foo:true, baz:'hello', bat:42 }
});
//=> { _:['bar'], foo:true, baz:'hello', bat:42 }Note: Because
--foohas a default oftrue, its output is cast to a Boolean. This means thatfoo=true, making'bar'an extra argument (_key).
options.string
Type: Array|String
Default: []
A single key (or array of keys) that should be parsed as Strings.
options.unknown
Type: Function
Default: undefined
Callback that is run when a parsed flag has not been defined as a known key or alias. Its only parameter is the unknown flag itself; eg --foobar or -f.
Once an unknown flag is encountered, parsing will terminate, regardless of your return value.
Note:
mrionly checks for unknown flags ifoptions.unknownandoptions.aliasare populated. Otherwise, everything will be accepted.
Comparisons
minimist
mriis 5x faster (see benchmarks)- Numerical values are cast as
Numbers when possible- A key (and its aliases) will always honor
opts.booleanoropts.string
- A key (and its aliases) will always honor
- Short flag groups are treated as
Booleans by default:minimist(['-abc', 'hello']); //=> { _:[], a:'', b:'', c:'hello' } mri(['-abc', 'hello']); //=> { _:[], a:true, b:true, c:'hello' }
- The
opts.unknownbehaves differently:- Unlike
minimist,mriwill not continue continue parsing after encountering an unknown flag
- Unlike
- Missing
options:opts.stopEarlyopts['--']
- Ignores newlines (
\n) within args (see test) - Ignores slashBreaks within args (see test)
- Ignores dot-nested flags (see test)
yargs-parser
mriis 40x faster (see benchmarks)- Numerical values are cast as
Numbers when possible- A key (and its aliases) will always honor
opts.booleanoropts.string
- A key (and its aliases) will always honor
- Missing
options:opts.arrayopts.configopts.coerceopts.countopts.envPrefixopts.nargopts.normalizeopts.configurationopts.numberopts['--']
- Missing
parser.detailed()method - No additional configuration object
- Added
options.unknownfeature
Benchmarks
Running Node.js v10.13.0
Load Times:
nopt 3.179ms
yargs-parser 2.137ms
minimist 0.746ms
mri 0.517ms
Benchmark:
minimist x 328,747 ops/sec ±1.09% (89 runs sampled)
mri x 1,622,801 ops/sec ±0.94% (92 runs sampled)
nopt x 888,223 ops/sec ±0.22% (92 runs sampled)
yargs-parser x 30,538 ops/sec ±0.81% (91 runs sampled)License
MIT © Luke Edwards