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


Posted in NodeJs onSeptember 17, 2014

诚然,之前处理都是使用内置的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);
NodeJs 相关文章推荐
nodejs读取memcache示例分享
Jan 02 NodeJs
Nodejs学习笔记之Global Objects全局对象
Jan 13 NodeJs
NodeJs基本语法和类型
Feb 13 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
浅谈Nodejs应用主文件index.js
Aug 28 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
NodeJS学习笔记之Module的简介
Mar 24 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
NodeJS安装图文教程
Apr 19 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
nodejs express配置自签名https服务器的方法
May 22 NodeJs
nodejs中各种加密算法的实现详解
Jul 11 NodeJs
nodejs npm package.json中文文档
Sep 04 #NodeJs
使用Nodejs开发微信公众号后台服务实例
Sep 03 #NodeJs
Nodejs+express+html5 实现拖拽上传
Aug 08 #NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 #NodeJs
NodeJS学习笔记之网络编程
Aug 03 #NodeJs
基于 Docker 开发 NodeJS 应用
Jul 30 #NodeJs
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 #NodeJs
You might like
请离开include_once和require_once
2013/07/18 PHP
php禁止浏览器使用缓存页面的方法
2014/11/07 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
java微信开发之上传下载多媒体文件
2016/06/24 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/06/05 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
jQuery中offsetParent()方法用法实例
2015/01/19 Javascript
jquery实现页面百叶窗走马灯式翻滚显示效果的方法
2015/03/12 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
vue中watch的用法汇总
2020/12/28 Vue.js
python批量下载图片的三种方法
2013/04/22 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
Django的性能优化实现解析
2019/07/30 Python
Python龙贝格法求积分实例
2020/02/29 Python
python三引号如何输入
2020/07/06 Python
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
医学检验专业个人求职信范文
2013/12/04 职场文书
会计专业毕业生自荐书
2014/06/25 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
社会工作专业自荐信
2014/09/26 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
2015年工程师工作总结
2015/04/30 职场文书
被委托人身份证明
2015/08/07 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
导游词之江南园林狮子林
2019/09/16 职场文书
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电