Optionator, Commander都可用於爲Node命令行工具(CLI)生成幫助庫。node
源碼:https://github.com/cuizhirong...git
Optionator是一個JavaScript選項解析和幫助生成庫。github
npm install optionator
require('optionator')返回一個function,一個VERSION參數(optionator的版本)。
function接收一個對象參數,參數中包含配置信息。function的執行結果返回一個對象。npm
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是數組app
returns:解析後的對象函數
parseArgv(input)
parseArgv和parse類似,可是parseArgv只接收數組,切掉前兩個元素。工具
parseArgv(process.argv)
generateHelp(helpOptions(可選))
根據settings生成幫助文本ui
參數:
helpOptions{showHidden: Boolean, interpolate: Object}
showHidden: 是否顯示hidden的option
interpolate: 指定數據去覆蓋prepend
和append
文本spa
//將改變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格式
Options格式
提供了用戶命令行輸入和參數解析的強大功能。
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)
用於打印幫助信息