在子命令之前执行全局选项
executing global options before subcommands
我试图在子命令之前执行一些全局参数,但子命令在 .
之前执行
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");
}
预期输出:
你好
内部子命令
世界
实际输出:
内部子命令
世界
你好
如何让全局选项在控制流到子命令之前执行。 全局选项不应在子命令中定义,代码应在单个文件中。
我找到了解决问题的方法
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");
}
}
但是如果有人知道正确的方法,请post回答。
您可以使用自定义事件侦听器。
program.on('option:hello', function () {
console.log('hello);
});
我试图在子命令之前执行一些全局参数,但子命令在 .
之前执行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");
}
预期输出:
你好
内部子命令
世界
实际输出:
内部子命令
世界
你好
如何让全局选项在控制流到子命令之前执行。 全局选项不应在子命令中定义,代码应在单个文件中。
我找到了解决问题的方法
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");
}
}
但是如果有人知道正确的方法,请post回答。
您可以使用自定义事件侦听器。
program.on('option:hello', function () {
console.log('hello);
});