bin-tool v2.2.3
bin-tool
The utility tool to create powerful command line tools
Install
$ npm i bin-toolUsage
For example with annotations, see example
/path/to/project
|-- cli.js
|-- commands
|-- serve.js
|-- package.jsoncli.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 8080new Command(argv = process.argv)
- argv
Arrayspecify the process argv
In most cases, we leave the argv unspecified to use the default value process.argv except for test purpose.
load(path): this
- path
stringthe full absolute path of the directory that contains sub commands
Load subtle commands
setter: offset number
Set the offset of process.argv defaults to 2
setter: options object
Set the options of the command
setter: usage string
Set the usage of the command
setter: version string
Set the semantic version of the command
override: run({cwd, argv, rawArgv}): void | Promise
- 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(alias, commandName): this
- alias
stringthe alias name of the command - commandName
stringthe original command name
Add an alias name for a command commandName
async start(): void
Start the command
errHandler(err)
Handle an error
showHelp()
Print help message of the current command to stdout
License
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago