• Stars
    star
    685
  • Rank 65,982 (Top 2 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A mature, feature-complete library to parse command-line options.

view on npm npm module downloads Gihub repo dependents Gihub package dependents Node.js CI Coverage Status js-standard-style

Upgraders, please read the release notes

command-line-args

A mature, feature-complete library to parse command-line options.

Synopsis

You can set options using the main notation standards (learn more). These commands are all equivalent, setting the same values:

$ example --verbose --timeout=1000 --src one.js --src two.js
$ example --verbose --timeout 1000 --src one.js two.js
$ example -vt 1000 --src one.js two.js
$ example -vt 1000 one.js two.js

To access the values, first create a list of option definitions describing the options your application accepts. The type property is a setter function (the value supplied is passed through this), giving you full control over the value received.

const optionDefinitions = [
  { name: 'verbose', alias: 'v', type: Boolean },
  { name: 'src', type: String, multiple: true, defaultOption: true },
  { name: 'timeout', alias: 't', type: Number }
]

Next, parse the options using commandLineArgs():

const commandLineArgs = require('command-line-args')
const options = commandLineArgs(optionDefinitions)

options now looks like this:

{
  src: [
    'one.js',
    'two.js'
  ],
  verbose: true,
  timeout: 1000
}

Advanced usage

Beside the above typical usage, you can configure command-line-args to accept more advanced syntax forms.

  • Command-based syntax (git style) in the form:

    $ executable <command> [options]
    

    For example.

    $ git commit --squash -m "This is my commit message"
    
  • Command and sub-command syntax (docker style) in the form:

    $ executable <command> [options] <sub-command> [options]
    

    For example.

    $ docker run --detached --image centos bash -c yum install -y httpd
    

Usage guide generation

A usage guide (typically printed when --help is set) can be generated using command-line-usage. See the examples below and read the documentation for instructions how to create them.

A typical usage guide example.

usage

The polymer-cli usage guide is a good real-life example.

usage

Further Reading

There is plenty more to learn, please see the wiki for examples and documentation.

Install

$ npm install command-line-args --save

© 2014-22 Lloyd Brookes <[email protected]>. Documented by jsdoc-to-markdown.

More Repositories

1

handbrake-js

Video encoding / transcoding / converting for node.js
JavaScript
566
star
2

renamer

Rename files in bulk.
JavaScript
522
star
3

command-line-usage

A simple, data-driven module for creating a usage guide.
JavaScript
207
star
4

wordwrapjs

Word-wrapping for javascript.
JavaScript
157
star
5

array-back

Isomorphic, load-anywhere arrayify function
JavaScript
82
star
6

byte-size

Isomorphic function to convert a bytes value (e.g. 3456) to a human-readable string ('3.5 kB')
JavaScript
73
star
7

ansi-escape-sequences

A simple, isomorphic library containing all known terminal ansi escape codes and sequences.
JavaScript
65
star
8

sort-array

Isomorphic, load-anywhere function to sort an array by scalar, deep or computed values in any standard or custom order
JavaScript
42
star
9

command-line-commands

Add a git-like command interface to your app.
JavaScript
41
star
10

transition-to-from-auto

perform CSS transitions to and from 'auto'
JavaScript
27
star
11

feature-detect-es6

Detect which ES6 features are available.
JavaScript
24
star
12

table-layout

Styleable plain-text table generator. Useful for formatting console output.
JavaScript
23
star
13

typical

Isomorphic, functional type-checking for Javascript
JavaScript
20
star
14

walk-back

Walk up the directory tree until a specified path is found.
JavaScript
13
star
15

usage-stats

A minimal Google Analytics Measurement Protocol client for tracking statistics in shell and javascript applications
JavaScript
12
star
16

browse

Terminal commands to launch your preferred browser (or any app) in full-screen mode
AppleScript
11
star
17

object-get

Access nested property values at any depth with a simple expression.
JavaScript
11
star
18

array-tools

Lightweight, use-anywhere toolkit for working with array data
JavaScript
9
star
19

common-log-format

Stream transform - converts common log format to JSON
JavaScript
9
star
20

gfmt

A use-anywhere, github-flavoured-markdown table generator.
JavaScript
9
star
21

table-layout-cli

Format data in column or table layout on the command line.
JavaScript
6
star
22

renamer-case

Renamer plugin to set the case of a filename.
JavaScript
5
star
23

find-replace

Replace or remove multiple items in an array
JavaScript
5
star
24

object-to-spawn-args

Converts an options object to an array suitable for passing to child_process.spawn()
JavaScript
5
star
25

yuidoc2md

A yuidoc-to-markdown generator
JavaScript
4
star
26

fs-then-native

Fs with a native promise API
JavaScript
4
star
27

work

Command and Command Queue pattern implementations
JavaScript
3
star
28

grunt-boil

Generate files with template-driven content. A simple, more generic alternative to Jekyll and Assemble.
JavaScript
3
star
29

home-path

Cross-platform home directory retriever
JavaScript
3
star
30

composite-class

An isomorphic JavaScript class for building composite structures.
JavaScript
3
star
31

file-set

Expand a list of paths and glob expressions into three sets: "files", "directories" and "not existing".
JavaScript
3
star
32

renamer-index-dir

Replaces the `{{index}}` token, resetting the counter for each folder visited.
JavaScript
3
star
33

current-module-paths

JavaScript
2
star
34

stream-handlebars

Extends handlebars with a streaming interface for .compile().
JavaScript
2
star
35

filter-where

Filter an array using any combination of scalars, object queries, functions or regular expressions.
JavaScript
2
star
36

veelo

Optimise your video library using Handbrake
JavaScript
2
star
37

cache-point

Simple, filesystem-backed memoisation cache.
JavaScript
2
star
38

fsm-base

Finite State Machine for use as a base class or mix-in
JavaScript
2
star
39

string-tools

Some useful functions for working with strings
JavaScript
2
star
40

command-line-tool

common operations for command-line tools
JavaScript
2
star
41

collect-json

Returns a stream which becomes readable with a single value once all (valid) JSON is received.
JavaScript
2
star
42

load-module

Node's require with a few extra features
JavaScript
2
star
43

stream-read-all

Returns a promise which fulfils with the supplied stream's content
JavaScript
2
star
44

template-clean

Template literal tag function to replace null and undefined values with an empty string
JavaScript
2
star
45

sse-server

Push an event stream from terminal to browser
JavaScript
2
star
46

argv-tools

Some useful tools for working with process.argv
JavaScript
1
star
47

boil-sitemap

Static website sitemap.xml generator
JavaScript
1
star
48

league

A hand-rolled Football League model with both Web and CLI visualisations.
JavaScript
1
star
49

race-timeout-anywhere

An isomorphic, load-anywhere timeout function for use with Promise.race.
JavaScript
1
star
50

stream-connect

Connects an arbitrary number of streams into a single, combined stream
JavaScript
1
star
51

obso

Observable Object
JavaScript
1
star
52

object-tools

Legacy module - no longer maintained
JavaScript
1
star
53

grunt-yuidoc2md

A markdown generator for yuidoc
JavaScript
1
star
54

config-master

A convention for storing and retrieving application config
JavaScript
1
star
55

console-dope

adds colouring and cursor control features to console
JavaScript
1
star
56

stream-monitor

Watch dem pipelines flow! Or not, as the case may be..
JavaScript
1
star
57

defer-promise

Isomorphic function returning a deferred promise. Uses native `Promise.defer` where available, else polyfills
JavaScript
1
star
58

cli-commands

A convention for building command-driven CLI apps
JavaScript
1
star
59

common-dir

Returns the parent directory common to each path
JavaScript
1
star
60

handlebars-json

Provides access to JSON.stringify from a Handlebars template.
JavaScript
1
star
61

collect-all

returns a stream which becomes readable once all input is received
JavaScript
1
star
62

boil

Boilerplate files, packages, apps, websites etc.
JavaScript
1
star
63

test-value

A module for testing values.
JavaScript
1
star
64

linguist

Translate strings or JSON from Node.js or the command line
JavaScript
1
star
65

create-mixin

For achieving something resembling multiple-inheritence in Javascript
JavaScript
1
star
66

nature

currently inactive
JavaScript
1
star