npm 包 inquirer-hierarchical 使用教程

阅读时长 11 分钟读完

前言:

inquirer-hierarchical 是 inquirer.js 的一个子模块,旨在帮助开发者创建一个更为优雅的命令行交互界面。它可以让你创建一个包含嵌套问题的交互式命令行程序,最大的特点就是可嵌套,类似目录结构。

本篇文章将详细介绍如何使用 inquirer-hierarchical,让你轻松优美地创建交互式命令行程序。

什么是 inquirer-hierarchical

inquirer-hierarchical 是一个 Node.js 模块,它是基于 inquirer.js 的,并扩展了 inquirer.js 的功能。相较于 inquirer.js,inquirer-hierarchical 支持嵌套问题的创建,可以模拟文件目录的结构,让你创建出更为复杂的交互式命令行程序。

如何安装 inquirer-hierarchical

使用 npm 安装:

如何使用 inquirer-hierarchical

需要导入 inquirer-hierarchical 模块,然后创建一个 Prompt 类型的问题(问题类似于 inquirer.js,Prompt 类是其中的一个,包含所有类型的问题),然后执行这个问题的 prompt() 方法即可。

让我们来看一个例子:

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

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

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

上面的示例中我们创建了一个 Prompt 类型的问题,并将它导出为 prompts。这个问题的属性包括:

  • name (字符串):问题的名字;
  • message (字符串):问题的提示语句;
  • type (字符串):问题的类型,例如 list、input、checkbox 等;
  • choices (数组):包含问题的选项及它们的值,这个时候我们可以通过 children 属性嵌套问题。

在 prompt() 方法中,我们将 prompts 执行了一次,返回了用户的输入,最终将用户的输入输出在控制台中。

执行此示例将会在命令行生成以下问题:

当选择其中的一个选项后,例如 git,问题变为:

再次选择其中一个选项,例如 commit,则问题变为:

最终用户结果为:

这个例子简单,但给我们展示了如何使用 inquirer-hierarchical。接下来我们将更深入地学习相关特性。

options 选项

在创建问题的时候,除了上述例子中的 name、message、type、choices 属性外,还有一些可用的选项。

separator

选项 separator 可以帮助你将列表分隔开来,例如:

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

loopedSeparator

选项 loopedSeparator 同样是用于分隔列表的,但是这个选项提供了循环分隔符功能,你可以在列表里使用两个或更多分隔符,inquirer-hierarchical 可以在它们中间循环,以增加可读性和美观性。

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

default

选项 default 可以设置默认选项:

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

pageSize

选项 pageSize 可以设置显示的列表长度,当你的列表比较长的时候,它非常有用:

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

result

选项 result 可以让用户选择时返回一个任意的值,这个值可以是一个数组,可以是一个函数,可以是一个 Promise,当然也可以是其他值。

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

validate

选项 validate 可以独立验证选择的值是否有效:

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

when

选项 when 能够通过指定某项值来控制问题是否展示:

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

结语

在本文中我们介绍了 inquirer-hierarchical 的安装和使用方法,并且着重介绍了各个选项,希望对你完成一个高效优美的交互式命令行有所帮助。如果有任何问题,请随时联系笔者。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6005590681e8991b448d65ab

纠错
反馈