commander.js
参考链接:
http://yijiebuyi.com/blog/2cd3833e8551a302b4ec645031bfd3d0.html
http://blog.gejiawen.com/2016/09/21/make-a-node-cli-program-by-commander-js/
https://github.com/tj/commander.js/blob/master/Readme_zh-CN.md
.option('-l, --langu', 'website langueage')
-l如果是命令的简写,必须是一个字母,多了也会报错。
bosszhang@bogon bin $ node macaw.js c
program.cheese: marble
you ordered a pizza with:
- marble cheese
bosszhang@bogon bin $ node macaw.js -c
you ordered a pizza with:
- marble cheese
bosszhang@bogon bin $ node macaw.js cheese
you ordered a pizza with:
- marble cheese
bosszhang@bogon bin $ node macaw.js --cheese
you ordered a pizza with:
- marble cheese
这几个的效果一样。
bosszhang@bogon bin $ node macaw.js --no-bbq-sauce
you ordered a pizza with:
without peppers
without pineapple
without bbq
- marble cheese
bosszhang@bogon bin $ node macaw.js --bbq-sauce
you ordered a pizza with:
without peppers
without pineapple
without bbq
- marble cheese
说明只要加上
.option('-n, --no-bbq-sauce', 'remove bbq sauce')
这条命令不管是
no-bbq-sauce 命令,还是no-bbq-sauce命令,都只会执行
else console.log(' without bbq');
这个语句。
比如说:
bosszhang@bogon bin $ node macaw.js
you ordered a pizza
with sauce
bosszhang@bogon bin $ node macaw.js no-sauce
you ordered a pizza
with sauce
bosszhang@bogon bin $ node macaw.js --no-sauce
you ordered a pizza
without sauce
bosszhang@bogon bin $ node macaw.js s
you ordered a pizza
with sauce
说明:
不识别的命令执行的也是
console.log(' without sauce');
/*****************************************/
bosszhang@bogon bin $ node macaw.js --sauce
you ordered a pizza
without sauce
bosszhang@bogon bin $ node macaw.js sauce
you ordered a pizza
with sauce
bosszhang@bogon bin $ node macaw.js no-sauce
you ordered a pizza
with sauce
说明:
同时出现,跟顺序有关,只会执行后出现的那个命令。
--sauce 和 --no-sauce
命令
--sauce 将不起作用。
即使执行也是执行--no-sauce
/*****************************************/
bosszhang@bogon bin $ node macaw.js rm dir
remove dir
bosszhang@bogon bin $ node macaw.js rm dir --recursive
remove dir recursively
说明:
command可以接受输入命令,反正都是process.arg数组的process.arg[2],以后的值
process.argv: [ '/Users/bosszhang/.nvm/versions/node/v6.2.0/bin/node',
'/Users/bosszhang/Documents/workspace_temp/test-cli/bin/macaw.js',
'rm',
'dir',
'--recursive' ]
当一个Nodejs程序运行时,会有许多存在内存中的全局变量,其中有一个叫做process
,意为进程对象。process
对象中有一个叫做argv
的属性。命令行程序的第一个重头戏就是解析这个process.argv
属性。
看起来process.argv
好像是一个数组,其中第一个元素是node的执行路径,第二个元素是当前执行文件的路径,从第三个元素开始,是执行时带入的参数。
option
用户:.option('-n, --name <name>', 'your name', 'GK')
- 第一个参数是选项定义,分为短定义和长定义。用
|
,,
,连接。- 参数可以用
<>
或者[]
修饰,前者意为必须参数,后者意为可选参数。
- 参数可以用
- 第二个参数为选项描述
- 第三个参数为选项参数默认值,可选。
commander.version 可以指定当前应用程序的一个版本号.
usage 指定使用方法,这里让我们输入一直值.
option 指定参数,格式,及参数说明.
/*****************************************/
bosszhang@bogon test-cli $ node ./bin/macaw-init.js aaa
process.argv: [ '/usr/local/bin/node',
'/Users/bosszhang/Documents/workspace_temp/test-cli/bin/macaw-init.js',
'aaa' ]
program.args: [ 'aaa' ]
说明:
program.usage('<project-name>').parse(process.argv) 会获取process.argv[2]参数。
macaw.js 和 macaw-init.js 和 macaw-hello.js是有关联的
bosszhang@bogon test-cli $ node ./bin/macaw.js zzz
macaw-zzz(1) does not exist, try --help
提示说不存在,说明
输入什么就会执行相应的文件
node ./bin/macaw.js init就执行macaw-init.js
node ./bin/macaw.js hello就执行macaw-hello.js
说明:
这条命令
process.argv: [ '/usr/local/bin/node',
'/Users/bosszhang/Documents/workspace_temp/test-cli/bin/macaw-init.js',
'aa' ]
使用完
再使用
program.args: [ 'aa' ]
如果在那条命令之前,则:
program.args: undefined
转载于:https://www.cnblogs.com/zhangzs000/p/9301373.html
commander.js相关推荐
- commander.js使用及源码分析
commander.js commander是一个轻巧的nodejs模块,提供了用户命令行输入和参数解析强大功能. commander的特性: 自记录代码 自动生成帮助 合并短参数 默认选项 强制选项 ...
- commander.js基本用法
准备工作 安装nodejs 安装commander.js,执行npm install commander --save version方法 作用:定义命令程序的版本号 参数说明: 版本号<必须& ...
- commander.js学习总结
commander是用于快捷开发命令行工具,提高开发效率的工具包. 官网: https://github.com/tj/commander.js/blob/master/Readme_zh-CN.md ...
- commander.js教程笔记
并非严格的教程博文,属于是个人在学习过程中的笔记心得汇总. 内容相对官方文档更通俗一些,入门新人,如果看不懂官方文档,可以大致看一看这个.有错的话请指正,标准的还得看官方文档. 1.commander ...
- Node.js之commander.js学习笔记
概述 commander.js可以用来写命令行工具. 官网地址:Commander.js 安装与引入 安装 执行如下命令进行安装,但前提是有node环境,即能使用npm命令进行安装: npm inst ...
- 玩转 Commander.js —— 你也是命令行大师
导语 | 最近做团队底层构建工具架构升级和命令行交互打了不少交道,再加上在研究 Vue-CLI 的源码,觉得 Commander.js 作为 Node.js 下这么优秀的命令行交互工具,值得总结一下, ...
- Node 系列 - 003 - commander.js
----------☆☆☆---------- Node 系列相应地址: 代码仓库:https://github.com/LiangJunrong/all-for-one 文章仓库:https://g ...
- Commander.js中-h或help命令使用问题
Commander.js中-h或help命令使用问题 program.usage() 中出现index 问题描述 & 现象 在使用commandName -h命令时(这里的commandNam ...
- commander.js之option、command、version
commander 快速开始 option(选项) command(指令) version(版本) 本文档主要是要针对需要开发脚手架进行使用的前端开发人员所参考的文档,commander是用于脚手架开 ...
最新文章
- 【编译原理】如何根据EBNF编写代码?
- 黑客瞄准美国 ATM 机,疯狂窃取超百万美元资金
- Nginx 常见面试题
- VMware Fusion中使用迅雷的问题
- 【算法】经典的ML算法(后续结合工作实践完善心得)
- 【23】数据可视化:基于 Echarts + Python 动态实时大屏范例 - Redis 数据源
- 关于如何提取仙剑奇侠传4的模型
- w10如何共享计算机硬盘,w10共享盘怎么设置_win10如何共享硬盘
- 如何删除双系统中的一个系统
- 大数据组件监控体系构建
- 互联网时代如何快速提升宣传效果?
- (一)云计算概念了解
- Matlab 最优化求解
- 周鸿袆:教你打造十页完美商业计划书
- Python练习题1.变量类型练习 华氏温度转摄氏温度 圆面积周长计算 判断闰年
- 试证明:已知二叉树的前序序列和中序序列,可以唯一确定该二叉树
- java mail imap 附件下载_Java Mail 发送带有附件的邮件
- P1185 绘制二叉树——蒟蒻的暴力模拟
- 人眼到底等于多少像素
- 重磅:世纪大和解!阿里、腾讯生态将打通