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学习笔记之Stream模块
Jan 13 NodeJs
nodejs中实现sleep功能实例
Mar 24 NodeJs
nodejs实例解析(输出hello world)
Jan 03 NodeJs
nodejs进阶(6)—连接MySQL数据库示例
Jan 07 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
Nodejs调用WebService的示例代码
Sep 29 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
详解redis在nodejs中的应用
May 02 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 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
综合图片计数器
2006/10/09 PHP
PHP函数getenv简介和使用实例
2014/05/12 PHP
PHP实现XML与数据格式进行转换类实例
2015/07/29 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
原型方法的不同写法居然会影响调试的解决方法
2007/03/08 Javascript
js异或加解密效果代码
2008/06/25 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
DWZ刷新dialog解决方法
2013/03/03 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
javascript模拟php函数in_array
2015/04/27 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
2016/06/03 Javascript
JS实现重新加载当前页面或者父页面的几种方法
2016/11/30 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
详解关于Vuex的action传入多个参数的问题
2019/02/22 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Python中实现字符串类型与字典类型相互转换的方法
2014/08/18 Python
Python中使用strip()方法删除字符串中空格的教程
2015/05/20 Python
Python矩阵常见运算操作实例总结
2017/09/29 Python
python GUI库图形界面开发之PyQt5 Qt Designer工具(Qt设计师)详细使用方法及Designer ui文件转py文件方法
2020/02/26 Python
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
捐款倡议书
2014/04/14 职场文书
大学生求职信
2014/06/17 职场文书
逃课检讨书范文
2015/05/06 职场文书
Pandas自定义选项option设置
2021/07/25 Python
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers