2

我一直在尝试,但就是无法消化 Yargs 的文档

我需要创建一组命令/子命令:

~$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

我想要别名: gfor generate, rfor routed-module, sfor stateful-ui

自动完成会很好。

这是我尝试过的,不知道从哪里开始:

  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。)

4

2 回答 2

2

使用这个关键的文档弄清楚了:

  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))
于 2020-01-24T15:02:29.133 回答
1

对我来说,实现这一目标的最佳方法是关注这个Github 问题,特别是这个评论中建议的内容。(另一个builder嵌套在 command 中builder)。

使用上述建议 ( 'generate [moduleType] [moduleNames...]') 的问题是您不能对不同的子命令使用不同的标志。

于 2021-05-28T19:52:15.427 回答