type-args

The node.js command line options parser which plays well with TypeScript.

Usage no npm install needed!

<script type="module">
  import typeArgs from 'https://cdn.skypack.dev/type-args';
</script>

README

type-args

NPM version Build Status Test Coverage Dependency Status DevDependency Status License PR Welcome

The node.js options parser that plays well with TypeScript. To fetch the TypeScript interface from the option rules is extremely hard. However, type-args tries its best to make coding experience of command line option parsing more intelligent.

This is a minimalist implementation. And its algorithms are optimized. It's without annoying command interfaces.

Installation

Install this package with npm.

npm i type-args -s

Usage

Define your parsing rules

const rules = {
  'help': {
    alias: 'h',
    desc: 'display help.',
    type: 'boolean'
  },
  'version': {
    alias: 'v',
    desc: 'display version.',
    type: 'boolean'
  },
  'verbose': {
    alias: 'V',
    desc: 'verbose output.',
    type: 'boolean',
    default: true
  },
  'files': {
    alias: 'f',
    desc: 'the files to be transformed',
    type: 'string[]'
  }
}

The parsing rule is an object with camel cased flag names as keys, and descriptor objects as values. The descriptor object has 4 values.

  • alias, single character string as the shortcut of the flag.
  • desc, a string represents the description of the options.
  • type, 'boolean' | 'number' | 'string' | 'number[]' | 'string[]'.
  • default, the default value of the option.

Parsing ARGV

import { parse } from 'type-args';

const [options, args, unknownOptions] = parse(process.argv, rules);
  • options is an object of parsed values.
  • args is an array of non option tokens.
  • unknownOptions is an array of undefined flags passed from argv.

Merging saved options

You can pass unlimited amount of saved options. Imagine you are the author of a large framework. You read options from package.json, from the .rcfile and user command line arguments. You may want merging those together with precedence like this:

default value < package.json < .rcfile < user command line arguments

type-args does what you want by accepting the ...third arguments.

License

MIT © Zhang Kai Yu