The utility tool to create powerful command line tools
$ npm i bin-toolFor example with annotations, see example
/path/to/project
|-- cli.js
|-- commands
|-- serve.js
|-- package.json
cli.js
const {Command} = require('bin-tool')
const path = require('path')
class Bin extends Command {
constructor () {
super()
this.load(path.join(__dirname, 'commands'))
}
}
new Bin().start()serve.js
const {Command} = require('bin-tool')
module.exports = class extends Command {
constructor () {
super()
this.options = {
port: {
type: 'number',
default: 3000,
description: 'port to bind on'
}
}
}
run ({argv}) {
serve(argv.port)
}
}package.json
{
"name": "bin",
"bin": {
"bin": "./cli"
}
}npm link
bin serve --port 8080- argv
Arrayspecify the process argv
In most cases, we leave the argv unspecified to use the default value process.argv except for test purpose.
- path
stringthe full absolute path of the directory that contains sub commands
Load subtle commands
Set the offset of process.argv defaults to 2
Set the options of the command
Set the usage of the command
Set the semantic version of the command
- cwd the current working directory which equals to
process.cwd() - argv
objectthe parsed argv object - rawArgv
Arraythe raw process argv
The method to override to define the behavior of the current command. If the method is not overridden, it will showHelp()
The argv object has a special argv.__ property which contains the arguments after '--'
- alias
stringthe alias name of the command - commandName
stringthe original command name
Add an alias name for a command commandName
Start the command
Handle an error
Print help message of the current command to stdout