Оказывается, что yargs всегда будет принимать пустые аргументы опций. Поведение отличается в зависимости от того, является ли опция опцией массива или нет.
Если вы запускаете programm --keyword --keyword=this --keyword=that
и определяете свои параметры следующим образом:
const cli = yargs
.array('keyword')
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
Вы получаете следующие выходные данные:
{
_: [],
keyword: [ 'this', 'that' ],
k: [ 'this', 'that' ],
'$0': 'bin/program.js'
}
Опция без аргумента просто игнорируется, что, скорее всего, не то, что вам нужно.
Без array
:
const cli = yargs
.option('keyword', {
alias: 'k',
type: 'string',
})
.argv;
console.log(yargs)
Вы получите следующий вывод:
{
_: [],
keyword: [ '', 'this', 'that' ],
k: [ '', 'this', 'that' ],
'$0': 'bin/program.js'
}
Это означает, что пустой аргумент сохраняется в результате.