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访问ActiveX对象,以操作Access数据库为例。
Dec 15 NodeJs
nodejs教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
详解nodejs爬虫程序解决gbk等中文编码问题
Apr 06 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
nodejs实现截取上传视频中一帧作为预览图片
Dec 10 NodeJs
nodejs用gulp管理前端文件方法
Jun 24 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
Nodejs + sequelize 实现增删改查操作
Nov 07 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
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
php常用Stream函数集介绍
2013/06/24 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
php+ajax实时输入自动搜索匹配的方法
2014/12/26 PHP
typecho插件编写教程(一):Hello World
2015/05/28 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
Bootstrap零基础学习第一课之模板
2016/07/18 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
Vue.js第二天学习笔记(vue-router)
2016/12/01 Javascript
Jquery Easyui进度条组件Progress使用详解(8)
2020/03/26 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
angular中实现li或者某个元素点击变色的两种方法
2017/07/27 Javascript
vue 2.0 购物车小球抛物线的示例代码
2018/02/01 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
nodejs中函数的调用实例详解
2018/10/31 NodeJs
vue+moment实现倒计时效果
2019/08/26 Javascript
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python实现破解12306图片验证码的方法分析
2017/12/29 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
Python中装饰器学习总结
2018/02/10 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
Python实现多线程下载脚本的示例代码
2020/04/03 Python
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
美丽的珠宝配饰:SmallThings
2019/09/04 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
2014年学校食堂工作总结
2014/11/25 职场文书
先进工作者推荐材料
2014/12/23 职场文书
担保贷款承诺书
2015/04/30 职场文书
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL