npm 包 @teamroboboogie/tabtab-commander 使用教程

阅读时长 6 分钟读完

介绍

@teamroboboogie/tabtab-commander 是一款 Node.js 的 CLI 工具,可用于创建命令行界面(CLI)的交互式自动补全功能。此 npm 包基于 tabtab 构建,可以方便地实现终端命令的自动补全功能,支持 Bash、Zsh 和 Fish 等终端。

安装

你可以直接使用 npm 进行安装:

使用

基本使用

使用 @teamroboboogie/tabtab-commander 可以很方便地实现自动补全功能。下面我们从几个方面来介绍如何使用它。

首先,在你的 Node.js 脚本中引入该 npm 包:

然后,你需要实例化一个 TabtabCommander 类实例。

其中,name 属性表示你的 CLI 工具的名称。例如,我们下面展示的示例中,name 属性值为 my-cli

接下来,你可以通过使用 commander.handleAutoComplete() 方法来为你的 CLI 工具添加自动补全功能。例如:

这样我们就完成了最基本的配置,后面我们会介绍如何进行更多的设置。

添加命令

在 CLI 工具中添加命令是常常见的操作。我们来看如何使用 commander.command() 方法来添加命令。

-- -------------------- ---- -------
------------------------ -------- ----- -------- ----- ------ ----- -- -
  ------
    -
      ----- --------
      ------------ ------- -------
    --
    -
      ----- -------
      ------------ ------- -----
    -
  ---
---

上述代码将会创建一个 hello 命令并添加自动补全功能。例如在终端中输入:

你就可以在命令行中看到:

添加子命令

如果您的 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

纠错
反馈