简介
@cto.ai/inquirer 是一个基于 Node.js 的命令行交互工具,它可以帮助你快速实现命令行界面,并方便地接收用户输入。它是一个开源的 npm 包,具有较高的使用率和良好的用户评价。
安装
使用 npm 进行安装:
npm install @cto.ai/inquirer
快速上手
首先,我们需要导入 inquirer。示例代码如下:
const inquirer = require('@cto.ai/inquirer');
接下来,我们可以使用 inquirer 提供的 API 进行交互。以下是一个简单的示例,用于获取用户输入的姓名、性别和年龄:
-- -------------------- ---- ------- ------ ---------- - ----- ------- - ----- ----------------- - ----- -------- ----- ------- -------- ----------- -- - ----- ------- ----- --------- -------- ----------- -------- ----- ---- ------ -- - ----- -------- ----- ------ -------- ----------- --------- --------------- - --- ----- - -------------------------- ------ ----- -- ----------- -- ------- ------- -- --- --------------------- -----展开代码
运行代码后,你将看到如下的交互式界面:
? 请输入您的姓名: ? 请选择您的性别: 男 ? 请输入您的年龄: 20
用户输入完毕后,程序会打印出用户的输入:
{ name: '张三', gender: '男', age: 20 }
使用示例
在命令行中选择一个项目模板
-- -------------------- ---- ------- ----- -------- - ---------------------------- ----- --------- - - - ----- ------------- ------ ----- ------------ ----------- ---- -- - ----- ------------- ------ ----- ------------ ----------- ---- -- -- ----- ------- - ----- ----------------- - ----- ------- ----- ----------- -------- ---------------- -------- ---------- -- --- ---------------------- -----------------------展开代码
运行代码后,你将看到如下的交互式界面:
? 请选择您要创建的项目模板: ◯ JavaScript ◉ TypeScript
用户选择后,程序会打印出用户的选择:
您选择的项目模板是 ts。
在命令行中输入多个 Github 仓库名
-- -------------------- ---- ------- ----- -------- - ---------------------------- ----- ------- - ----- ----------------- - ----- --------- ----- -------- -------- --------- ------ ------ -- --- ----- ----- - ------------------------------------------ ----------------- ------ -------------------- -------展开代码
运行代码后,你将看到如下的交互式界面:
? 请输入您要克隆的 Github 仓库名:
用户输入多个仓库名,使用回车键分隔。用户输入完毕后,程序会打印出用户的输入:
您输入的 Github 仓库名是:octokit/rest.js, google/go-cloud, cto-ai/sdk-js。
API 参考
inquirer.prompt(questions)
该方法用于在命令行中获取用户输入。它的参数是一个数组,数组中的每一个元素都是一个用于定义一个问题的对象。
示例代码:
-- -------------------- ---- ------- ----------------- - ----- -------- ----- ------- -------- ----------- -- - ----- ------- ----- --------- -------- ----------- -------- ----- ---- ------ -- - ----- -------- ----- ------ -------- ----------- --------- --------------- - --- ----- - -------------------------- ------ ----- -- ----------- -- ------- ------- -- ---展开代码
其中,每一个问题对象都必须包含以下属性:
type
:表示问题的类型。常见的问题类型有input
、list
、confirm
、rawlist
、editor
等。name
:表示问题的名称,相当于是一个键名,用于在后续的代码中获取用户输入的值。message
:表示问题的文本描述,将会显示在命令行界面中,提示用户输入。default
:表示问题的默认值。validate
:表示用户输入的验证函数。它会接收用户输入的值作为参数,需要返回一个布尔值或一个字符串。如果返回的是布尔值,表示用户输入是否合法;如果返回的是字符串,则代表用户输入不合法时的错误提示。
其他属性则根据问题的类型而有所区别。用户输入的值将会以 name
属性指定的名称为键名,保存在一个对象中,并通过 inquirer.prompt
方法返回。
inquirer.Separator
用于界面分隔符的对象,常用于在多个选择项之间添加分割线。
-- -------------------- ---- ------- ----- -------- - ---------------------------- ----- ------- - - - ----- ------------- ------ ---- -- - ----- ------------- ------ ---- -- --- --------------------- - ----- -------- ------ ------- -- - ----- ------ ------ ----- -- -- ----------------- - ----- ------- ----- ----------- -------- --------------- -------- -------- -- ---展开代码
inquirer.registerPrompt(name, prompt)
用于注册自定义的问题类型。它需要两个参数:第一个参数是自定义的问题类型名称,第二个参数是一个问答对象,定义了该问题类型的行为。
-- -------------------- ---- ------- ----- -------- - ---------------------------- ------------------------------ - -------- ----------------- --------- --------------- - --- ------- - ------------------------ ------ -------------- --- - -- ------------------ -- ------------------ -- ------------ -- ------- --------------- - --- ------- - ------------------------ ------ ------------------------ ------------------------ -- ---展开代码
示例代码中注册了一个名为 add
的问答对象,它会将输入的两个数值处理成一个数组返回。用户可以通过以下方式调用:
inquirer.prompt([ { type: 'add', name: 'numbers', message: '请输入两个数值,以逗号分隔:', }, ]);
inquirer.createPromptModule()
该方法返回一个用于创建自定义 prompt 的函数。
-- -------------------- ---- ------- ----- -------- - ---------------------------- ----- ------------ - ------------------------------ -------------- - ----- -------- ----- ------- -------- ----------- -- ---展开代码
总结
@cto.ai/inquirer 是一个功能强大、易于使用的命令行交互工具,不论你是开发命令行应用,还是需要在许多用户之间进行一些数据输入和验证,都能够起到很大的帮助作用。通过本文的介绍,相信读者已经对它的基本用法以及常用 API 有了一定的认识,欢迎在实践中逐步探索更多的应用场景!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/the-cto-ai-inquirer