Commander.js是Ruby中Commander在node.js中的实现.为commandline程序提供强大的参数解析能力.
新建 nodecmd.js 文件,加入如下代码:
#!/usr/bin/env node var program = require('commander'); function range (val) { return val.split('..').map(Number); } function list (val) { return val.split(',') } //定义参数,以及参数内容的描述 program .version('0.0.1') .usage('[options] [value ...]') .option('-m, --message <string>', 'a string argument') .option('-i, --integer <n>', 'input a integet argument.', parseInt) .option('-f, --float <f>', 'input a float arg', parseFloat) .option('-l, --list <items>', 'a list', list) .option('-r, --range <a>..<b>', 'a range', range) //添加额外的文档描述 program.on('help', function() { console.log(' Examples:') console.log('') console.log(' # input string, integer and float') console.log(' $ ./nodecmd.js -m \"a string\" -i 1 -f 1.01') console.log('') console.log(' # input range 1 - 3') console.log(' $ ./nodecmd.js -r 1..3') console.log('') console.log(' # input list: [1,2,3]') console.log(' $ ./nodecmd.js -l 1,2,3') console.log('') }); //解析commandline arguments program.parse(process.argv) //输出结果 console.info('--messsage:') console.log(program.message); console.info('--integer:') console.log(program.integer) console.info('--range:') console.log(program.range) console.info('--list:') console.log(program.list)
m-lv:node lvjian$ ./nodecmd.js -v 0.0.1 m-lv:node lvjian$ m-lv:node lvjian$ ./nodecmd.js -m 'node cmd' -i 1 -f 2.0 -r 1..10 -l 1,2,3,4 --messsage: node cmd --integer: 1 --range: [ 1, 10 ] --list: [ '1', '2', '3', '4' ] m-lv:node lvjian$ m-lv:node lvjian$ ./nodecmd.js -h Examples: # input string, integer and float $ ./nodecmd.js -m "a string" -i 1 -f 1.01 # input range 1 - 3 $ ./nodecmd.js -r 1..3 # input list: [1,2,3] $ ./nodecmd.js -l 1,2,3 Usage: nodecmd.js [options] [value ...] Options: -v, --version output the version number -m, --message <string> a string argument -i, --integer <n> input a integet argument. -f, --float <f> input a float arg -l, --list <items> a list -r, --range <a>..<b> a range -h, --help output usage information m-lv:node lvjian$
Commander.js: https://github.com/visionmedia/commander.js
Ruby Commander: https://github.com/visionmedia/commander