Optionator, Commander均可用于为Node命令行工具(CLI)生成帮助库。
源码:https://github.com/cuizhirong...
Optionator
Optionator是一个JavaScript选项解析和帮助生成库。
npm install optionator
require('optionator')返回一个function,一个VERSION参数(optionator的版本)。
function接收一个对象参数,参数中包含配置信息。function的执行结果返回一个对象。
var optionator = require('optionator')({
prepend: 'Usage: cmd [options]',
append: 'Version 1.0.1',
options: [{
option: 'help',
alias: 'h',
type: 'Boolean',
description: 'displays help'
}, {
option: 'count',
alias: 'c',
type: 'Int',
description: 'number of things',
longDescription: 'text longDescription',
example: 'cmd --count 2'
}]
});
const options = optionator.parseArgv(process.argv);
if (options.help) {
console.log(optionator.generateHelp());
}
parse(input, parseOptions)
根据settings处理输入,并返回包含结果的对象。
参数:
input-想要解析的内容
parseOptions-Int型,表示input是数组还是字符串,默认0是字符串,2是数组
returns:解析后的对象
parseArgv(input)
parseArgv和parse相似,但是parseArgv只接收数组,切掉前两个元素。
parseArgv(process.argv)
generateHelp(helpOptions(可选))
根据settings生成帮助文本
参数:
helpOptions{showHidden: Boolean, interpolate: Object}
showHidden: 是否显示hidden的option
interpolate: 指定数据去覆盖prepend
和append
文本
//将改变append的文本内容:Version {{version}} 改为 Version 0.4.2
generateHelp({interpolate: {version: '0.4.2'}})
return: String-生成的帮助文本
generateHelpForOption(optionName)
为指定的optionName生成拓展的帮助文本。如果option有example,则会显示这个example。如果指定了longDescription,它将显示longDescription而不显示Description。
generateHelpForOption('count');
Settings格式
- prepend: 是在帮助文本中放置在options之前的可选字符串。
- append: 是在帮助文本中放置在options之前的可选字符串。
- options: 配置信息的数组
- helpStyle: 对象,改变一些默认样式
Options格式
- option(必须) 名字
- alias(可选) 缩写
- type(必须) 类型,被用作验证输入值
- description(可选) 介绍
- example(可选) option的例子-当generateHelpForOption被调用的时候才会打印
- required(可选) 设置为true时,如果没有定义这个参数打印将会失败
Commander
提供了用户命令行输入和参数解析的强大功能。
npm install commander --save
#! /usr/bin/env node
var program = require('commander');
program
.version('0.0.1')
.option('-p, --pepprs', 'Add peppers', function() { console.log('-p, --pepprs callback'); })
.option('-b, --bbq-sauce', 'Add bbq sauce')
.option('-c | --control-thing', 'Add ct')
.parse(process.argv);
if (program.controlThing) console.log(' - cttt');
Options
在Commander
中通过.option()
定义。例子中解析了来自process.argv的参数和options(--help默认添加)
option()
接收四个参数;
第一个参数是option名称,'short option, long option'
或者写成 'short option | long option'
; long option中多个单词组成的,比如--template-engine将被解析成驼峰式命名templateEngine; 在short/long option之后还可以指定参数(<required>
必填参数, [db]
可选参数)
第二个参数是option的描述;
第三个参数是回调函数;
第四个参数是回调函数默认值。
对于未定义的option,程序会抛出错误,如下图的第一条命令; Commander
的解决方法是提供方法.allowUnknownOption()
, 直接退出取消这个自动报错机制, 如下图的第二条命令。
Command-特殊的options
program
.command('rm <dir>')
.option('-r, --recursive <cmd>', 'Remove recursively')
.action(function (dir, cmd) {
console.log('dir ' + dir + ' cmd ' + cmd);
});
.outputHelp(cb)
.help(cb)
用于打印帮助信息
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。