commander.js-命令行输入和参数解析

621 阅读1分钟

commander.js

# nodejs模块,提供了用户命令行输入和参数解析强大功能
https://github.com/tj/commander.js

全局安装

npm install commander -g

属性

.args

除开指令外的参数 数组形式

主要方法

.option("-a,--b ",'注释',默认值); .requiredOption() 必填不传此命令会报错

   /* 
       a是简称
       b是全称 
       <char>参数=的值的占位符如果没有就是返回boolean
       
   */

.command('a').description('简介').argument('string').option("-a,--b ").action((str, options)=>{})

   /*等同于option 可以设置嵌套指令 
       1.command: 设置主指令 
       2.description:设置介绍
       3.argument:<string> 二级指令占位符
       4.option:设置二级指令 
       5.action:最后二级指令参数逻辑处理函数
   */

.version

   //写入版本号  -v 展示

.action

   //逻辑处理 this.args 变量获取数组

.argument

   //注册参数 没有 -- 或者 -

.opts

   //返回输入命令携带的的参数对象

.parse

   //解析启动函数 开关

.hook //下个指令解析之前运行 可以修改环境变量 影响下个指令解析 .addOption

   //addOption() 动态添加指令 
       //.choices 限制选择内容
       //.default 设置默认值
       //.implies 触发一个指令可以静默设置其他未输入的指令值
       //.preset("20") 设置默认数字
       //.argParser(parseFloat) //追加数字转换方法
       //.env('xxx') //PORT=9001 node options-env.js 前置指令(优先级低)
           
   addOption(new Option('-d, --drink <size>', 'drink cup size').choices(['small', 'medium', 'large']))
           

小知识

   1.例如`-d -s -p cheese`可以写成`-ds -p cheese`甚至`-dsp cheese`2.option('--no-cheese'); --no 开始的指令 cheese默认为true 带上了才是false