tiny-parse-argv
A tiny function for parsing process.argv, a modern rewrite of a sensible subset of minimist.
Last updated a year ago by fabiospampinato .
Repository · Bugs · Original npm · Tarball · package.json
$ gnpm install tiny-parse-argv 
SYNC missed versions from official npm registry.

Tiny Parse Argv

A tiny function for parsing process.argv, a modern rewrite of a sensible subset of minimist.

Features

The following features are provided:

  • Built-in TypeScript types, and pretty clean and understandable code.
  • Single/multiple implicit/explicit shorthand flags: -f, -f some, -f 123, -f123, -abc, -abc 123, -abc123, -f some -f other.
  • Single/multiple implicit/explicit longhand flags: --foo, --foo some, --foo 123, --foo=123, --foo=some, --foo some --foo other.
  • Explicitly negated flags are false by default: --no-foo, --no-bar.
  • Eager flags consume multiple consecutive values: -f one two three, --foo one two three.
  • Arguments: ./app.sh with some list of arguments.
  • Values that would be interpreted as numbers if they were JavaScript are coerced to numbers automatically.
  • Flags that could lead to prototype pollution issues are safely ignored.
  • options.boolean: the value for the listed flags will always be coerced to a boolean.
  • options.string: the value for the listed flags will always be coerced to a string.
  • options.eager: the listed flags are considered to be eager, and will consume multiple consecutive non-flag values.
  • options.variadic: the listed flags are considered to be variadic, and their value, if present, will always be an array.
  • options.required: the listed flags are considered to be required, if some are missing options.onMissing will be called.
  • options.alias: if any aliased flag is assigned then all the aliases for it will be assigned too, automatically.
  • options.default: an object containing default values, which will be used if not overridded by the argv array.
  • options.onInvalid: a function that will be called if any of the provided flags have an invalid value, e.g. a boolean value for a string flag.
  • options.onMissing: a function that will be called if any of the required flags is missing. If a default value is provided for a flag it won't be considered as missing.
  • options.onUnknown: a function that will be called if any of the flags are unknown, i.e. not listed as either a boolean, a string, or an alias. If a default value is provided for a flag it won't be considered as unknown.
  • --: a special flag that stops parsing, everything after it will be copied, untouched, into the -- property of the return object.

Differences with minimist

The following differences exist compared to minimist:

  • option['--'] set to false is not supported, it's as if it's always set to true.
  • option.boolean set to true is not supported, you should always explicitly list all your supported boolean flags instead.
  • option.boolean set to a single string is not supported, always provide an array of flags instead.
  • option.string set to a single string is not supported, always provide an array of flags instead.
  • option.alias mapping to a single string is not supported, always provide an array of aliases instead.
  • option.stopEarly is not supported, it's as if it's always set to false.
  • Dotted flags are not supported, so their paths will not be expanded, you can use path-prop's unflat function for that.

Other than that it should work pretty much identically, since we are basically using the same tests.

Install

npm install --save tiny-parse-argv

Usage

import parseArgv from 'tiny-parse-argv';

parseArgv ([ '-f', '--foo', 'some', 'argument', '--', '--app-flag' ]);
// => { f: true, foo: 'some', _: ['argument'], '--': ['--app-flag'] }

License

MIT © Fabio Spampinato

Current Tags

  • 2.4.0                                ...           latest (10 months ago)

11 Versions

  • 2.4.0                                ...           10 months ago
  • 2.3.0                                ...           a year ago
  • 2.2.0                                ...           2 years ago
  • 2.1.2                                ...           2 years ago
  • 2.1.1                                ...           2 years ago
  • 2.1.0                                ...           2 years ago
  • 2.0.1                                ...           2 years ago
  • 2.0.0                                ...           2 years ago
  • 1.0.2                                ...           2 years ago
  • 1.0.1                                ...           2 years ago
  • 1.0.0                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (0)
None
Dev Dependencies (3)
Dependents (2)

Copyright 2013 - present © cnpmjs.org | Home |