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中自定义事件实例
Jun 20 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
利用nodejs监控文件变化并使用sftp上传到服务器
Feb 18 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 NodeJs
关于NodeJS中的循环引用详解
Jul 23 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同时支持GIF、png、JPEG
2006/10/09 PHP
php array的学习笔记
2012/05/10 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
js escape,unescape解决中文乱码问题的方法
2010/05/26 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
jquery使用淘宝接口跨域查询手机号码归属地实例
2013/11/28 Javascript
jQuery学习笔记之jQuery原型属性和方法
2014/06/09 Javascript
Js 正则表达式知识汇总
2014/12/02 Javascript
JavaScript中的toUTCString()方法使用详解
2015/06/12 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
json实现添加、遍历与删除属性的方法
2016/06/17 Javascript
详解BootStrap中Affix控件的使用及保持布局的美观的方法
2016/07/08 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
Python科学计算环境推荐——Anaconda
2014/06/30 Python
Python进行数据科学工作的简单入门教程
2015/04/01 Python
Python使用urllib2模块实现断点续传下载的方法
2015/06/17 Python
详解 Python中LEGB和闭包及装饰器
2017/08/03 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Python爬取数据保存为Json格式的代码示例
2019/04/09 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
python turtle 绘制太极图的实例
2019/12/18 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
数控技术学生的自我评价
2014/02/15 职场文书
教师应聘自荐信范文
2014/03/14 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
超市采购员岗位职责
2015/04/07 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
python实现图片批量压缩
2021/04/24 Python
Python中zipfile压缩包模块的使用
2021/05/14 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python