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使用mysql模块之获得更新和删除影响的行数的方法
Mar 18 NodeJs
详谈nodejs异步编程
Dec 04 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
NodeJs form-data格式传输文件的方法
Dec 13 NodeJs
nodejs 最新版安装npm 的使用详解
Jan 18 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
Mar 02 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
nodejs中的异步编程知识点详解
Jan 17 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
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
ThinkPHP实现二级循环读取的方法
2014/11/03 PHP
PHP保存session到memcache服务器的方法
2016/01/19 PHP
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
javascipt基础内容--需要注意的细节
2013/04/10 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
Angular事件之不同组件间传递数据的方法
2018/11/15 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
微信小程序动态显示项目倒计时
2019/06/20 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
通过实例解析js可枚举属性与不可枚举属性
2020/12/02 Javascript
微信小程序实现下拉加载更多商品
2020/12/29 Javascript
pyqt5自定义信号实例解析
2018/01/31 Python
python 编码规范整理
2018/05/05 Python
java中两个byte数组实现合并的示例
2018/05/09 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
python opencv pytesseract 验证码识别的实现
2020/08/28 Python
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
药剂学专业应届生自荐信
2013/09/29 职场文书
应届生自我鉴定
2013/12/11 职场文书
迟到检讨书500字
2014/02/05 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
传承焦裕禄精神思想汇报2014
2014/09/10 职场文书
医院领导班子四风对照检查材料
2014/09/27 职场文书
丧事答谢词
2015/01/05 职场文书
车间统计员岗位职责
2015/04/14 职场文书
初婚初育证明范本
2015/06/18 职场文书
导游词之沈阳清昭陵
2019/12/28 职场文书