我试图在子命令之前执行一些全局参数,但子命令在之前执行。
program
.version('0.0.1','-V, --version')
.option('-h, --hello','print hello')
program
.command('msg')
.option('-w, --world','print world')
.action(function(options){
console.log("inside subcommand");
if(options.world){
console.log("world");
}
});
program.parse(process.argv);
if(program.hello){
console.log("hello");
}
预期输出:
您好
在子命令
中世界
实际输出:
在子命令
中世界
您好
如何在控制流到子命令之前执行全局选项。 不应在子命令中定义全局选项,代码应该在单个文件中。
答案 0 :(得分:0)
我找到解决问题的解决方法
var program = require('commander');
var globalFlag = 1;
program
.version('0.0.1','-V, --version')
.option('-h, --hello','print hello')
program
.command('msg')
.option('-w, --world','print world')
.action(function(options){
if(globalFlag){
global();
globalFlag=0;}
console.log("inside subcommand");
if(options.world){
console.log("world");
}
});
program.parse(process.argv);
if(globalFlag){
global();
globalFlag=0;
}
function global(){
if(program.hello){
console.log("hello");
}
}
但如果有人知道这样做的正确方法,请发表回答。
答案 1 :(得分:0)
您可以使用自定义事件侦听器。
program.on('option: hello', function () {
console.log('hello);
});