parsec

<a name="parsec"></a>

Features | Install | Usage | Examples

Parsec is a tiny CLI parser.

  • Default shorthands
  • Default values / types
  • Handle --no-* options
  • Handle unknown options
npm install parsec
// ./index.js -par5ec 
parse()
{
  "p": true,
  "a": true,
  "r": "5ec"
}

Customize:

// ./index.js -s42 
parse("secret", ["verbose", "V", { default: true }])
{
  "s": 42,
  "secret": 42,
  "V": true,
  "verbose": true
}

Parse process.argv by default.

import parse from "parsec"
parse(alias1, alias2, ...)
  • Custom aliases
// ./index.js --bar 
parse(["foo", "bar", "baz"])
{
  "foo": true,
  "bar": true,
  "baz": true
}
  • Example aliases
"foo" // → ["f", "foo"] 
["F", "f", "foo"]
["foo", { default: "./" }]
["baz", { default: true }]
  • Default shorthands
// ./index.js -fb 
parse("foo", "bar")
{
  "f": true,
  "foo": true,
  "b": true,
  "bar": true,
}
  • Default values and types
// ./index.js --file 
parse(["f", "file", { default: "." }])
{
  "f": ".",
  "file": "."
}
  • Handle --no-flags
// ./index.js --no-foo --no-bar=baz 
parse()
{
  "foo": false,
  "no-bar": "baz"
}
  • Handle unknown options
// ./index.js --bar 
parse("foo", (option) => {
  throw new RangeError(`unknown option ${option}`) // bar 
})
  • Bare operands and arguments after -- are added to ._. To override:
parse(["_", "alias"])
  • Bind parse to a different source of arguments:
parse.call(["--foo", "--bar"], [alias1, alias2, ...])
// ./node index.js -f bar -bp 
parse()
{
  "f": "bar",
  "b": true,
  "p": "./"
}

with custom aliases:

parse("foo", "bar", ["path", { default: "./" }])
{
  "f": "bar",
  "foo": "bar",
  "b": true,
  "bar": true,
  "p": "./",
  "path": "./"
}