这块判断 program.args 逻辑不理解
// 注册全局 options 和 命令
function registerCommand() {
program
.name(Object.keys(pkg.bin)[0])
.usage('<command> [options]')
.version(pkg.version) // 配置版本
.option('-d, --debug', '是否开启调试模式', false) // 配置全局option并指定默认值
;
// 监听 --debug 全局 option
program.on('option:debug', function () {
if (program.opts().debug) {
process.env.LOG_LEVEL = 'verbose' // 基于 --debug 全局 options 动态配置一个环境变量
} else {
process.env.LOG_LEVEL = 'info'
}
log.level = process.env.LOG_LEVEL
});
// 监听 未知命令
program.on('command:*', function (obj) {
const availableCommandes = program.commands.map(cmd => cmd.name())
console.log(colors.red('未知的命令: ' + obj[0]))
if (availableCommandes.length > 0) {
console.log(colors.green('可用命令: ' + availableCommandes.join(',')))
}
});
program.parse(process.argv) // 解析命令行参数
// 没有命令
if (program.args && program.args.length < 1) {
program.outputHelp() // 打印帮助文档
console.log()
}
}为什么判断 --debug 或 -d 打印帮助文档不在 program.on('option:debug')中做?
if (program.args && program.args.length < 1) 这个if不是只判断了命令行中有没有命令吗?为什么只有输入 -d 或 --debug 才能进入这个if?我输入 -V 这种全局option没有进来
24
收起
正在回答 回答被采纳积分+1
1回答
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星