介绍
@teamroboboogie/tabtab-commander 是一款 Node.js 的 CLI 工具,可用于创建命令行界面(CLI)的交互式自动补全功能。此 npm 包基于 tabtab 构建,可以方便地实现终端命令的自动补全功能,支持 Bash、Zsh 和 Fish 等终端。
安装
你可以直接使用 npm 进行安装:
npm i @teamroboboogie/tabtab-commander
使用
基本使用
使用 @teamroboboogie/tabtab-commander 可以很方便地实现自动补全功能。下面我们从几个方面来介绍如何使用它。
首先,在你的 Node.js 脚本中引入该 npm 包:
const tabtab = require('@teamroboboogie/tabtab-commander');
然后,你需要实例化一个 TabtabCommander 类实例。
const commander = new tabtab.TabtabCommander({ name: 'my-cli', });
其中,name
属性表示你的 CLI 工具的名称。例如,我们下面展示的示例中,name
属性值为 my-cli
。
接下来,你可以通过使用 commander.handleAutoComplete()
方法来为你的 CLI 工具添加自动补全功能。例如:
const commander = new tabtab.TabtabCommander({ name: 'my-cli', }); commander.handleAutoComplete();
这样我们就完成了最基本的配置,后面我们会介绍如何进行更多的设置。
添加命令
在 CLI 工具中添加命令是常常见的操作。我们来看如何使用 commander.command()
方法来添加命令。
-- -------------------- ---- ------- ------------------------ -------- ----- -------- ----- ------ ----- -- - ------ - ----- -------- ------------ ------- ------- -- - ----- ------- ------------ ------- ----- - --- ---
上述代码将会创建一个 hello
命令并添加自动补全功能。例如在终端中输入:
my-cli hello j
你就可以在命令行中看到:
my-cli hello jane my-cli hello world
添加子命令
如果您的 CLI 工具具有多个子命令,您可以通过 commander.subcommand()
来实现。
-- -------------------- ---- ------- --------------------------- ------ ----------- ----------- - -------- - - ----- ------------- ------ ------------ ----------- -- - ----- ---------- ------ ------------ ------- ----- - ----- ------- ----------- ------------------------------------ -- -- -- -- ----- ------ ----- -- - --- ---
上述代码将会添加一个 start
命令并添加自动补全功能。其中,我们还通过 options
属性添加了两个选项:
--verbose
或者-V
:表示输出详细的日志信息;--port
或者-p
: 表示指定的端口。
在 --port
选项中,我们还使用了 args
属性,这个属性用于指定这个选项接收值的配置信息。这里我们使用了 portList
变量,用于指定这个选项可以接收的所有值的列表。
使用生成器
我们可以使用生成器来动态地生成值列表,为 CLI 工具的自动补全功能提供更多的灵活性。例如:
-- -------------------- ---- ------- --------------------------- ---------- ----------- - ------- - ---------- ----- ---------- - ----- - ------ - - ----- ------------ -------------- ------ ------------------ ------------------- ------- ---------------- - ---- ---- --- ------ --------------------------- -- -------- -- -------------- ---- - - -- ----- ------ ----- -- - --- ---
上述代码中,我们为 checkout
命令的 commit
参数使用了一个异步的生成器函数。它执行了一个 shell 命令来获取 Git 仓库中的所有提交记录,然后包装成一个值列表返回。
命令参数的自动补全
如果你的命令参数有限定的输入列表,你可以为之定义一个生成器,当你按 tab
自动补全时,输入提示将会是这个值列表。
-- -------------------- ---- ------- ---------------------- --------- ------- - ------ - ----- - ----- -------- ---------- -------------------------------- ------- ------- ---------- ---------- -- -- -- ----- ------ ----- -- - --- ---
在上述代码中,我们定义了 msg
命令的一个参数 level
。它的输入列表是 ['error', 'warn', 'info', 'verbose', 'debug']
。
总结
到这里,我们已经介绍了如何使用 @teamroboboogie/tabtab-commander 实现终端命令的自动补全功能。该 npm 包功能强大,提供了多种配置项和接口等,可以让你轻松地为自己的 CLI 工具赋予自动补全功能。如果你正在开发一个 CLI 工具,@teamroboboogie/tabtab-commander 值得你一试。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005757a81e8991b448ea5d8