广州明生堂生物科技有限公司


nodejs命令行参数处理模块commander使用实例

网络编程 nodejs命令行参数处理模块commander使用实例 06-21

诚然,之前处理都是使用内置的process.agrv ,这个能work,但是不好使,于是tj大神给写了一个,my god,完全的高大上:

1、安装

npm install commander

2、option 解析

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.

#!/usr/bin/env node

 

/**

 * Module dependencies.

 */

 

var program = require('commander');

 

program

  .version('0.0.1')

  .option('-p, --peppers', 'Add peppers')

  .option('-P, --pineapple', 'Add pineapple')

  .option('-b, --bbq', 'Add bbq sauce')

  .option('-c, --cheese [type]', 'Add the specified type of cheese [marble]', 'marble')

  .parse(process.argv);

 

console.log('you ordered a pizza with:');

if (program.peppers) console.log('  - peppers');

if (program.pineapple) console.log('  - pineapple');

if (program.bbq) console.log('  - bbq');

console.log('  - %s cheese', program.cheese);

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.

3、自动生成help信息

$ ./examples/pizza --help

 

  Usage: pizza [options]

 

  Options:

 

    -V, --version        output the version number

    -p, --peppers        Add peppers

    -P, --pineapple      Add pineapple

    -b, --bbq            Add bbq sauce

    -c, --cheese <type>  Add the specified type of cheese [marble]

    -h, --help           output usage information

当然你也可以手动生成:

#!/usr/bin/env node

 

/**

 * Module dependencies.

 */

 

var program = require('../');

 

function list(val) {

  return val.split(',').map(Number);

}

 

program

  .version('0.0.1')

  .option('-f, --foo', 'enable some foo')

  .option('-b, --bar', 'enable some bar')

  .option('-B, --baz', 'enable some baz');

 

// must be before .parse() since

// node's emit() is immediate

 

program.on('--help', function(){

  console.log('  Examples:');

  console.log('');

  console.log('    $ custom-help --help');

  console.log('    $ custom-help -h');

  console.log('');

});

 

program.parse(process.argv);

 

console.log('stuff');

4、举个完整的例子

function range(val) {

  return val.split('..').map(Number);

}

 

function list(val) {

  return val.split(',');

}

 

function collect(val, memo) {

  memo.push(val);

  return memo;

}

 

function increaseVerbosity(v, total) {

  return total + 1;

}

 

program

  .version('0.0.1')

  .usage('[options] <file ...>')

  .option('-i, --integer <n>', 'An integer argument', parseInt)

  .option('-f, --float <n>', 'A float argument', parseFloat)

  .option('-r, --range <a>..<b>', 'A range', range)

  .option('-l, --list <items>', 'A list', list)

  .option('-o, --optional [value]', 'An optional value')

  .option('-c, --collect [value]', 'A repeatable value', collect, [])

  .option('-v, --verbose', 'A value that can be increased', increaseVerbosity, 0)

  .parse(process.argv);

 

console.log(' int: %j', program.integer);

console.log(' float: %j', program.float);

console.log(' optional: %j', program.optional);

program.range = program.range || [];

console.log(' range: %j..%j', program.range[0], program.range[1]);

console.log(' list: %j', program.list);

console.log(' collect: %j', program.collect);

console.log(' verbosity: %j', program.verbose);

console.log(' args: %j', program.args);

Node.js中使用Log.io在浏览器中实时监控日志(等同tail -f命令)
今天,抽空了浏览了下node.js,哈哈,看了一篇入门的文章(http://www.nodebeginner.org/index-zh-cn.html),自我感觉是入门了,不过里面一句话,挺有感悟:不过

小结Node.js中非阻塞IO和事件循环
学习和使用Node.js已经有两个月,使用express结合mongoose写了一个web应用和一套RESTfulwebapi,回过头来看Node.js官网首页对Node.js的介绍:Node.jsusesanevent-driven,no

用C/C++来实现 Node.js 的模块(一)
N久之前的一个坑——用Node.js来重构NBUT的OnlineJudge,包括评测端也得重构一遍。(至于什么时候完成大家就不要关心了,(/?Д′)/~??总之我们现在要做


编辑:广州明生堂生物科技有限公司

标签:写了,中非,重构,都是,入门