简要咨询咨询QQ网站导航网站搜索手机站点联系我们设为首页加入收藏 

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

来源:易贤网   阅读:1845 次  日期:2014-10-15 15:56:11

温馨提示:易贤网小编为您整理了“nodejs命令行参数处理模块commander使用实例”,方便广大网友查阅!

诚然,之前处理都是使用内置的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 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] ')

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

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

.option('-r, --range ..', 'A range', range)

.option('-l, --list ', '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);

更多信息请查看IT技术专栏

更多信息请查看脚本栏目
点此处就本文及相关问题在本站进行非正式的简要咨询(便捷快速)】     【点此处查询各地各类考试咨询QQ号码及交流群
上一篇:js实现在同一窗口浏览图片
下一篇:node.js中使用q.js实现api的promise化
易贤网手机网站地址:nodejs命令行参数处理模块commander使用实例
由于各方面情况的不断调整与变化,易贤网提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!