诚然,之前处理都是使用内置的process.agrv ,这个能work,但是不好使,于是tj大神给写了一个,my god,完全的高大上:mUtHTML5中文学习网 - HTML5先行者学习网
1、安装mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
npm install commandermUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网2、option 解析mUtHTML5中文学习网 - HTML5先行者学习网
Options with commander are defined with the .option() method, also serving as documentation for the options. The example below parses args and options from process.argv, leaving remaining args as the program.args array which were not consumed by options.mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
#!/usr/bin/env nodemUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
/**mUtHTML5中文学习网 - HTML5先行者学习网
* Module dependencies.mUtHTML5中文学习网 - HTML5先行者学习网
*/mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
var program = require('commander');mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
programmUtHTML5中文学习网 - HTML5先行者学习网
.version('0.0.1')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-p, --peppers', 'Add peppers')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-P, --pineapple', 'Add pineapple')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-b, --bbq', 'Add bbq sauce')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')mUtHTML5中文学习网 - HTML5先行者学习网
.parse(process.argv);mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
console.log('you ordered a pizza with:');mUtHTML5中文学习网 - HTML5先行者学习网
if (program.peppers) console.log(' - peppers');mUtHTML5中文学习网 - HTML5先行者学习网
if (program.pineapple) console.log(' - pineapple');mUtHTML5中文学习网 - HTML5先行者学习网
if (program.bbq) console.log(' - bbq');mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' - %s cheese', program.cheese);mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网Short flags may be passed as a single arg, for example -abc is equivalent to -a -b -c. Multi-word options such as “ template-engine” are camel-cased, becoming program.templateEngine etc.mUtHTML5中文学习网 - HTML5先行者学习网
3、自动生成help信息mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
$ ./examples/pizza --helpmUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
Usage: pizza [options]mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
Options:mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
-V, --version output the version numbermUtHTML5中文学习网 - HTML5先行者学习网
-p, --peppers Add peppersmUtHTML5中文学习网 - HTML5先行者学习网
-P, --pineapple Add pineapplemUtHTML5中文学习网 - HTML5先行者学习网
-b, --bbq Add bbq saucemUtHTML5中文学习网 - HTML5先行者学习网
-c, --cheese <type> Add the specified type of cheese [marble]mUtHTML5中文学习网 - HTML5先行者学习网
-h, --help output usage informationmUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网当然你也可以手动生成:mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
#!/usr/bin/env nodemUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
/**mUtHTML5中文学习网 - HTML5先行者学习网
* Module dependencies.mUtHTML5中文学习网 - HTML5先行者学习网
*/mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
var program = require('../');mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
function list(val) {mUtHTML5中文学习网 - HTML5先行者学习网
return val.split(',').map(Number);mUtHTML5中文学习网 - HTML5先行者学习网
}mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
programmUtHTML5中文学习网 - HTML5先行者学习网
.version('0.0.1')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-f, --foo', 'enable some foo')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-b, --bar', 'enable some bar')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-B, --baz', 'enable some baz');mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
// must be before .parse() sincemUtHTML5中文学习网 - HTML5先行者学习网
// node's emit() is immediatemUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
program.on('--help', function(){mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' Examples:');mUtHTML5中文学习网 - HTML5先行者学习网
console.log('');mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' $ custom-help --help');mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' $ custom-help -h');mUtHTML5中文学习网 - HTML5先行者学习网
console.log('');mUtHTML5中文学习网 - HTML5先行者学习网
});mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
program.parse(process.argv);mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
console.log('stuff');mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网4、举个完整的例子mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
function range(val) {mUtHTML5中文学习网 - HTML5先行者学习网
return val.split('..').map(Number);mUtHTML5中文学习网 - HTML5先行者学习网
}mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
function list(val) {mUtHTML5中文学习网 - HTML5先行者学习网
return val.split(',');mUtHTML5中文学习网 - HTML5先行者学习网
}mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
function collect(val, memo) {mUtHTML5中文学习网 - HTML5先行者学习网
memo.push(val);mUtHTML5中文学习网 - HTML5先行者学习网
return memo;mUtHTML5中文学习网 - HTML5先行者学习网
}mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
function increaseVerbosity(v, total) {mUtHTML5中文学习网 - HTML5先行者学习网
return total + 1;mUtHTML5中文学习网 - HTML5先行者学习网
}mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
programmUtHTML5中文学习网 - HTML5先行者学习网
.version('0.0.1')mUtHTML5中文学习网 - HTML5先行者学习网
.usage('[options] <file ...>')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-i, --integer <n>', 'An integer argument', parseInt)mUtHTML5中文学习网 - HTML5先行者学习网
.option('-f, --float <n>', 'A float argument', parseFloat)mUtHTML5中文学习网 - HTML5先行者学习网
.option('-r, --range <a>..<b>', 'A range', range)mUtHTML5中文学习网 - HTML5先行者学习网
.option('-l, --list <items>', 'A list', list)mUtHTML5中文学习网 - HTML5先行者学习网
.option('-o, --optional [value]', 'An optional value')mUtHTML5中文学习网 - HTML5先行者学习网
.option('-c, --collect [value]', 'A repeatable value', collect, [])mUtHTML5中文学习网 - HTML5先行者学习网
.option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)mUtHTML5中文学习网 - HTML5先行者学习网
.parse(process.argv);mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' int: %j', program.integer);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' float: %j', program.float);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' optional: %j', program.optional);mUtHTML5中文学习网 - HTML5先行者学习网
program.range = program.range || [];mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' range: %j..%j', program.range[0], program.range[1]);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' list: %j', program.list);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' collect: %j', program.collect);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' verbosity: %j', program.verbose);mUtHTML5中文学习网 - HTML5先行者学习网
console.log(' args: %j', program.args);mUtHTML5中文学习网 - HTML5先行者学习网
mUtHTML5中文学习网 - HTML5先行者学习网