#!/usr/bin/env node
const { program } = require('commander')
const { version } = require('./package.json')
// 当前路径
console.log(process.cwd())
// 配置版本号
program.version(version)
// 介绍命令的使用
// program.usage('可以介绍命令的用法,进行举例')
// 配置帮助提示,可以通过 $ dzm-cli --help 查询对应的 option 配置项,不包含子命令的 option 配置项
program.option('-d, --dzm [type]', 'Add cheese with optional type')
// 配置帮助提示并支持监听
program
.option('-x, --xyq [type]', 'Add cheese with optional type')
.action((opts, cmd) => {
// opts:跟下面解析用户传入的参数结果一样,是个对象,会包含所有的用户传入参数
// cmd:整个命令对象
console.log('【option 输出】:', opts)
})
// 配置子命令
program
// 子命令名称
.command('create <app-name>')
.description('create a new project')
// 子命令支持的属性,可以通过 $ dzm-cli create -h 查询对应的 option 配置项
.option('-f, --force, overwrite target derectory if it exists')
// .usage('可以介绍命令的用法,进行举例')
.action((value, cmd) => {
// value:只会输出 <app-name> 的值
// cmd:子命令如果传入了子命令的 option 属性指令,这里就会带出,否则不带,是个空
console.log('【command 输出】:', value, cmd)
})
// 接收传入的值
// program
// .argument('<username>', 'user to login')
// .argument('\[password]', 'password for user, if required', 'no password given')
// .action((username, password) => {
// console.log('username:', username)
// console.log('password:', password)
// })
// 监听 --help 指令,可以补充说明文档
program.on('--help', function () {
console.log('如果觉得说明文档不全,可以这里追加补充!')
})
// 解析用户传入的参数
// 1、先调用 parse,会将传入的参数,针对上面配置的指令与子命令进行分析,改执行的执行,该转成参数的转成参数
program.parse(process.argv)
// 2、用户传入的所有参数
const opts = program.opts()
// 用户传入的参数
// 执行 $ dzm-cli -d 123 456,输出的结果为:{ dzm: '123' } [ '456' ]
// -d 后面的 123 为指令 dzm 的参数,后面多余的 456 则为附带的参数值,两者可混合存在
console.log('【argv | opts 输出】:', opts, program.args)