rOACCT/node_modules/mri49c99f97fe9aissn4frontend
readme.md
mri ![CI](https://github.com/lukeed/mri/actions)
Quickly scan for CLI flags and arguments
This is a [fast](#benchmarks) and lightweight alternative to [minimist](https://github.com/substack/minimist) and [yargs-parser](https://github.com/yargs/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](#comparisons) for more info.
Install
sh $ npm install --save mri
Usage
sh $ demo-cli --foo --bar=baz -mtv -- hello world
js const 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<br> Default: []
An array of arguments to parse. For CLI usage, send process.argv.slice(2). See [process.argv](https://nodejs.org/docs/latest/api/process.html#process_process_argv) for info.
options.alias
Type: Object<br> 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<br> Default: []
A single key (or array of keys) that should be parsed as Booleans.
options.default
Type: Object<br> 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.
js mri(['--foo', 'bar']); //=> { _:[], foo:'bar' } mri(['--foo', 'bar'], { default: { foo:true, baz:'hello', bat:42 } }); //=> { _:['bar'], foo:true, baz:'hello', bat:42 }
Note: Because --foo has a default of true, its output is cast to a Boolean. This means that foo=true, making 'bar' an extra argument (_ key).
options.string
Type: Array|String<br> Default: []
A single key (or array of keys) that should be parsed as Strings.
options.unknown
Type: Function<br> 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: mri _only_ checks for unknown flags if options.unknown and options.alias are populated. Otherwise, everything will be accepted.
Comparisons
minimist
- mri is 5x faster (see [benchmarks](#benchmarks))
- Numerical values are cast as Numbers when possible
- A key (and its aliases) will always honor opts.boolean or opts.string
- Short flag groups are treated as Booleans by default: `js minimist(['-abc', 'hello']); //=> { _:[], a:'', b:'', c:'hello' }
mri(['-abc', 'hello']); //=> { _:[], a:true, b:true, c:'hello' } ` - The opts.unknown behaves differently:
- Unlike minimist, mri will not continue continue parsing after encountering an unknown flag
- Missing options:
- opts.stopEarly
- opts['--']
- Ignores newlines (\n) within args (see test)
- Ignores slashBreaks within args (see test)
- Ignores dot-nested flags (see test)
yargs-parser
- mri is 40x faster (see [benchmarks](#benchmarks))
- Numerical values are cast as Numbers when possible
- A key (and its aliases) will always honor opts.boolean or opts.string
- Missing options:
- opts.array
- opts.config
- opts.coerce
- opts.count
- opts.envPrefix
- opts.narg
- opts.normalize
- opts.configuration
- opts.number
- opts['--']
- Missing [parser.detailed()](https://github.com/yargs/yargs-parser#requireyargs-parserdetailedargs-opts) method
- No additional configuration object
- Added [options.unknown](#optionsunknown) feature
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