前言:
inquirer-hierarchical 是 inquirer.js 的一个子模块,旨在帮助开发者创建一个更为优雅的命令行交互界面。它可以让你创建一个包含嵌套问题的交互式命令行程序,最大的特点就是可嵌套,类似目录结构。
本篇文章将详细介绍如何使用 inquirer-hierarchical,让你轻松优美地创建交互式命令行程序。
什么是 inquirer-hierarchical
inquirer-hierarchical 是一个 Node.js 模块,它是基于 inquirer.js 的,并扩展了 inquirer.js 的功能。相较于 inquirer.js,inquirer-hierarchical 支持嵌套问题的创建,可以模拟文件目录的结构,让你创建出更为复杂的交互式命令行程序。
如何安装 inquirer-hierarchical
使用 npm 安装:
npm install inquirer-hierarchical --save
如何使用 inquirer-hierarchical
需要导入 inquirer-hierarchical 模块,然后创建一个 Prompt 类型的问题(问题类似于 inquirer.js,Prompt 类是其中的一个,包含所有类型的问题),然后执行这个问题的 prompt() 方法即可。
让我们来看一个例子:
-- -------------------- ---- ------- ----- ------------ - --------------------------------- ----- ------- - --- -------------- ----- ---------- -------- ------------- ----- ------- -------- - - ----- ------ ------ ------ --------- - - ----- -------- ------ ----------- -- - ----- --------- ------ ------------ - - -- - ----- ------ ------ ------ --------- - - ----- ---------- ------ ------------- -- - ----- ------- ------ ---------- - - - - --- ----------------------------- -- - --------------------- ---
上面的示例中我们创建了一个 Prompt 类型的问题,并将它导出为 prompts。这个问题的属性包括:
- name (字符串):问题的名字;
- message (字符串):问题的提示语句;
- type (字符串):问题的类型,例如 list、input、checkbox 等;
- choices (数组):包含问题的选项及它们的值,这个时候我们可以通过 children 属性嵌套问题。
在 prompt() 方法中,我们将 prompts 执行了一次,返回了用户的输入,最终将用户的输入输出在控制台中。
执行此示例将会在命令行生成以下问题:
请选择您要使用的命令 ❯ git npm
当选择其中的一个选项后,例如 git,问题变为:
请选择您要使用的命令 git ❯ npm
再次选择其中一个选项,例如 commit,则问题变为:
请选择您要使用的命令 git commit (git) ❯ clone (git) init (npm)
最终用户结果为:
{ command: '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