脚手架 --- command框架<一>
版本:6.0.0
假设脚手架名称:big-cat-cli
实例化
const commander = require('commander')
const program = new commander.Command()
program
基本信息配置
program.name(Object.keys(pkg.bin)[0]) // 赋值name, 显示在useage 前部分.usage('<command> [options]').version(pkg.version) // 赋值version.parse(argv) // 解析参数
打印帮助文档
Program.outputHelp()
效果等同于big-cat-cli -h, 输入big-cat-cli 或big-cat-cli -d 或big-cat-cli init -d都能打印
如果需要 big-cat-cli init -d 时不打印:
option用法
1、option -> 定义选项, 三个参数,(‘-简称, --全称’, ‘这是option的描述’, ‘这是option的默认值’)
program.option('-d, --debug', '这是描述:是否开启调试模式', false)
注意: 全称后面没有参数默认是布尔类型,如果值为strng, 需要写成–全称 <参数>, 尖括号表示必填参数
program.option('-p, --path <path>', '这是一个参数是string的option', '')
2、监听option
// 监听的是全称,执行简称也能监听到
program.on('option:path', () => {console.log(program.path)})
效果:
3、全局option挂载到program上,通过program.xxx就能获取
4、option可以是全局的也可以是command的
command
1、注册command:
program.command('init [projectName]').description('初始化项目').option('-f, --force', '是否强制初始化项目').action((projectName, cmdObj) => {console.log(`projectName: ${projectName}, cmdObj: ${cmdObj.force}`)})
注册完后,帮助文档里面就有了
2、注册的命令init中获取全局option path
.action((projectName, cmdObj) => {console.log(`projectName: ${projectName}, cmdObj: ${cmdObj.parent.path}`)})
注意: 当命令多级嵌套的时候,最里面的command拿到的 cmdObj.paraent就不是最外层的
----未完待续—