Easily create multi-command CLI apps (similar to git).
ezcli was inspired by the excellent commander.js package. Check it out if you need something more full-featured.
npm i ezcli -S{
"name": "cli-app",
"version": "1.0.0",
"bin": "./app.js"
}#!/usr/bin/env node
const cli = require('ezcli')
cli('cli-app')
.command('subcommand', () => {
console.log('in subcommand')
})
.command('commandWithArg', arg => {
console.log(`commandWithArgs: ${arg}`)
})
.command('optionalParams', (required, optional = 'default') => {
console.log(`optionalParams: ${required} ${optional}`)
})
.process()~ $ cli-app
v1.0.0
Usage: cli-app <command>
Commands:
subcommand
commandWithArg <arg>
optionalParams <required> [optional = 'default']
~ $ cli-app subcommand
in subcommand
~ $ cli-app commandWithArg
Usage: cli-app commandWithArg <arg>
~ $ cli-app commandWithArg test
commandWithArgs: test
~ $ cli-app optionalParams
Usage: cli-app optionalParams <required> [optional = 'default']
~ $ cli-app optionalParams abc
optionalParams: abc default
~ $ cli-app optionalParams abc 123
optionalParams: abc 123
Declare the cli app with the given name. The name should match the defined binary name in your package.json (more info).
Define a subcommand with a given name. Names should be unique and should contain no whitespace. fn will be executed when this subcommand is invoked.
Any parameters defined in fn will become part of the command signature. E.g., command('test', (thing) => {}) will produce the signature test <thing>.
Optional parameters are acceptible, but only at the end of the parameter list. E.g., command('test', (a, b='default') => {}) will produce test <a> [b='default'].
command is chainable, so you may add several commands in sequence.
process is used to indicate the end of your cli app definition. Once it is called, it will begin processing any command line arguments passed in to your cli app, and will execute the correct subcommand or print usage information.
ezcli assumes there is a version defined in your package.json. It will automatically use this as part of your app usage message.
ezcli requires node version >= 6.0.0. It is recommended that you set the required minimum node version within your package.json (more info)