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文件操作模块FS(File System)常用函数简明总结
Jun 05 NodeJs
轻松创建nodejs服务器(6):作出响应
Dec 18 NodeJs
NodeJs中的VM模块详解
May 06 NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 NodeJs
初探nodeJS
Jan 24 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
深入理解nodejs中Express的中间件
May 19 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
详解nodejs 配置文件处理方案
Jan 02 NodeJs
Nodejs异步流程框架async的方法
Jun 07 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 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
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
php采集时被封ip的解决方法
2010/08/29 PHP
神盾加密解密教程(二)PHP 神盾解密
2014/06/08 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
js右键菜单效果代码
2007/07/21 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
js插件实现图片滑动验证码
2020/09/29 Javascript
Vue.js 中的实用工具方法【推荐】
2019/07/04 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
Python2与Python3的区别实例分析
2019/04/11 Python
django之使用celery-把耗时程序放到celery里面执行的方法
2019/07/12 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
python计算波峰波谷值的方法(极值点)
2020/02/18 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
用python写爬虫简单吗
2020/07/28 Python
python 线程的五个状态
2020/09/22 Python
python利用appium实现手机APP自动化的示例
2021/01/26 Python
Ted Baker美国官网:英国时尚品牌
2018/10/29 全球购物
英国手机壳购买网站:Case Hut
2019/04/11 全球购物
银行职业规划书范文
2013/12/28 职场文书
酒店节能减排方案
2014/05/26 职场文书
医院见习报告范文
2014/11/03 职场文书
技术员岗位职责范本
2015/04/11 职场文书
人与自然的观后感
2015/06/18 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书
教师外出学习心得体会
2016/01/18 职场文书
写给医护人员的一封感谢信
2019/09/16 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS