Как реализовать несколько подкоманд с помощью Yargs? - PullRequest
0 голосов
/ 24 января 2020

Я пытался и пытался, но просто не мог переварить Yargs ' docs .

Мне нужно создать набор команд / подкоманд:

~$framework generate routed-module ModuleOne ModuleTwo ModuleThree --animation-style=bounce-up

//would call a handler with:
{ modules: string[], options: {animationStyle?: AnimationStyle}}
type AnimationStyle = 'bounce-up' | 'slide-left'

или

~$framework generate stateful-ui ModuleOne ModuleTwo ModuleThree
//would call a handler with:
{ modules: string[]}

или

~$framework init
//would just call a handler

Я хотел бы получить псевдонимы: g для generate, r для routed-module, s для stateful-ui.

Было бы неплохо автозаполнение.

Вот что я пробовал, не знаю, откуда go отсюда:

  yargs
    .scriptName('elm-framework')
    .command({
      command: 'generate [moduleType] [moduleNames]',
      aliases: ['g'],
      describe: 'Generates a resource',
      handler: config.handleModuleGeneration,
      builder: {
        moduleType: {
          demand: true,
          choices: ['routed', 'stateful'] as const,
          default: 'routed',
        },
        moduleNames: {
          demand: true,
          array: true,
        },
      },
    })

Спасибо!

(Делать это с машинописью не обязательно. Прежде всего, я хочу понять, как использовать API библиотеки.)

1 Ответ

0 голосов
/ 24 января 2020

Разобрался, используя этот важный документ :

  yargs
    .scriptName('framework')
    .command({
      command: 'generate [moduleType] [moduleNames...]',
      aliases: ['g'],
      describe: 'Generates a resource',
      handler: parsed => console.log('your handler goes here', parsed),
      builder: {
        moduleType: {
          demand: true,
          choices: ['routed', 'stateful'] as const,
          default: 'routed',
        },
        moduleNames: {
          demand: true,
          array: true,
        },
      },
    }).parse(process.argv.slice(2))
...