Вы не можете делать то, что просите, с помощью яргов, и, вероятно, не следует. Легко понять, почему вы не можете увидеть, что yargs-parser (модуль yargs использует для анализа ваших аргументов) возвращает для различных стилей аргументов, которые вы упомянули:
Как видите:
-m A
анализируется как опция m
со значением A
.
-m2 B
анализируется как опция m
со значением 2
и, отдельно, параметром массива B
.
--m2 C
анализируется как опция m2
со значением C
.
Нет способа заставить парсер вести себя иначе. На это есть веские причины: большинство инструментов командной строки (несмотря на Windows) ведут себя так.
В соответствии с десятилетним соглашением, "длинные" опции используют две черты, за которыми следует удобочитаемое имя, например --max-count
. «Короткие» параметры, которые часто являются псевдонимами для длинных, используют одну черту, за которой следует один символ, например -m
, и - это ключевой бит - если параметр принимает значение, пробел между параметром и значение может быть опущено. Вот почему yargs видит -m2
, он предполагает, что 2
является значением для опции m
.
Если вы хотите использовать yargs (и не путать пользователей, разбирающихся в командной строке), вам нужно изменить параметры на 1. --m
и --m2
или 2. -m
и (например, ) -n
.