commander.js时node.js的轻量级,富有表现力和强大的命令行框架。
安装:
npm install commander --save
相关api:
version方法:定义命令行程序的版本号
参数说明:
.version('1.0.0', '-s, --version') 第一个参数是版本号,
第二个参数是自定义flag
自定义flag可省略,默认为-V和--version
执行 node index.js -V 或者 node index.js --version得到版本号
.parse(process.argv) process.argv是命令行信息
当自定义flag时,–version不能被忽略
const program = require('commander');
program
.version('1.0.0', '-v, --version')
.parse(process.argv);
option方法:定义命令的选项
参数说明
.option('-a,--add','add something') 第一个参数为flag,第二个参数为当选项的描述可省略
const program = require('commander');
program
.version('1.0.0')
.option('-a,--add','add something')
.option('-u,--update','update something')
.option('-r,--remove','remove somthing')
.parse(process.argv)
console.log('You choose:');
if(program.add) console.log(' add somthing')
if(program.update) console.log(' update something')
if(program.remove) console.log(' remove something')
短flag使用-,长flag使用--
执行 node index.js -a 或者 node index.js -add 会打印Youchoose:add something
多个单词形式
const program = require('commander');
program
.version('1.0.0')
.option('--add-file','add a file')
.parse(process.argv);
if(program.addFile) console.log('add a file')
当选项为多单词形式时,使用驼峰形式得到输入项
执行 node index.js --add-file 会打印add a file
以–no形式开头的选项,代表后面紧跟单词的相反面
const program = require('commander');
program
.version('1.0.0')
.option('--no-add','not add a file')
.parse(process.argv)
if(program.add) console.log('add a file')
else console.log('not add a file')
执行 node index.js --no-add 会打印not add a file
选项后面使用<>或[]
const program = require('commander');
program
.version('1.0.0')
.option('-a,--add <filename>','add a file')
.parse(process.argv)
console.log('add a file named:'+program.add)
执行node index.js -a add.js会打印 add a file named:add.js
command方法:自定义命令
参数说明:
自定义命令名称:
名称<必须>
命令参数<可选>:
<>和[]定义参数
命令的最后一个参数可以是可变的,需要在数组后加入…标志:在命令后面传入的参数
命令描述<可省略>
配置选项<可省略>:可配置noHelp、isDefault等
const program = require('commander');
program
.version('1.0.0')
.command('my-cli <path>')
.option('-a,--add <filename>','add a file')
.option('-u,--update <filename>','update a file')
.option('-r,--remove <filename>','remove a file')
.action(function(path,cmd){
console.log(path)
console.log(cmd.Add)
})
program.parse(process.argv)
使用action后会开启输入的选项校验,若输入了未定义的选项,则抛出错误
执行 node index.js my-cli C -a demo.js 会打印C demo.js
action 方法:定义命令的回调函数 参数说明:
注:一个command对应一个命令,也对应一个文件index-cli 命令对应bin目录下的index.js
description方法:命令的描述性语句
参数说明:
命令的描述
const program = require('commander');
program
.version('1.0.0')
.description('It is my cli')
.parse(process.argv)
回调函数 parse方法:用于解析process.argv 参数说明:
process.argv