如何使用 oclif 创建 Git 风格的子命令?

How can I create Git-style subcommands with oclif?

我正在使用 Heroku 的 CLI 框架 oclif 编写 CLI。它工作得很好,但我想要 Git-like 子命令,比如:

$ mycli mycommand subcommand

$ mycli mycommand subcommand --flags="are awesome"

$ mycli mycommand another-subcommand --name="John Doe"

我浏览了文档,但找不到任何与命令结构、布局、层次结构等相关的信息。我可以将 mycommand 写成普通命令,然后先打开 argv 的开关参数,但我的子命令接受不同的标志,所以当有人运行 mycli help mycommand.

时,我失去了 oclif 报告帮助的能力

所以,我的问题是:使用 oclif 创建子命令的最佳方法是什么?

您可以创建以下结构:

 - src
 --- commands // all your commands will be on this folder
 ----- subcommand1 // if you have more commands from after subcomand1 include them in this folder like the one bellow.
 ------ command.js // a simple command
 ----- subcommand2.js

这会产生如下命令:

cli subcommand1 command --some-flag --some-argument="xpto"
cli subcommand2 --some-other-flag --some-other-argument="WAT"

我注意到的一件事是,如果你想与其他命令共享一些标志或参数,你要么必须为此使用基数 class,要么在上声明 flags/switches/arguments另一个文件并将它们导入所需的命令