前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >inquirer.js 构建交互式命令行工具,全网详细 inquirer.js中文教程

inquirer.js 构建交互式命令行工具,全网详细 inquirer.js中文教程

作者头像
用户6256742
发布2024-06-26 09:47:30
1370
发布2024-06-26 09:47:30
举报
文章被收录于专栏:网络日志网络日志

Inquirer 是一个流行的 Node.js 库,用于构建交互式命令行界面。它提供了一个简单而强大的 API,使得创建用户友好的交互变得容易。可以看作是一款强大的命令行交互式问答库

www.npmjs.com/package/inq…

1. 安装 Inquirer

首先,你需要在你的项目中安装 Inquirer。你可以通过 npm 来完成这个操作:

代码语言:javascript
复制
npm install inquirer

2. 使用 Inquirer

安装完成后,你就可以在你的项目中引用并使用 Inquirer 了。下面是一个基本的使用例子:

代码语言:javascript
复制
const inquirer = require('inquirer');

inquirer
  .prompt([
    /* Pass your questions in here */
  ])
  .then((answers) => {
    // Use user feedback for... whatever!!
  });

inquirer 提供了一系列的 prompt 类型,包括文本输入、列表选择、密码输入等。下面是一个简单的示例,展示了如何使用 inquirer 来收集用户的文本输入:

代码语言:javascript
复制
	const inquirer = require('inquirer');  
	inquirer.prompt([  
	    {  
	        type: 'input',  
	        name: 'username',  
	        message: '请输入你的用户名:',  
	    },  
	]).then(answers => {  
	    console.log(`你输入的用户名是:${answers.username}`);  
	});

除了文本输入,inquirer 还提供了其他多种 prompt 类型,以满足不同的交互需求。

  1. 列表选择:让用户从一系列选项中选择一个。
代码语言:javascript
复制
	const choices = [  
	    { name: '选项A', value: 'a' },  
	    { name: '选项B', value: 'b' },  
	    { name: '选项C', value: 'c' },  
	];  
	inquirer.prompt([  
	    {  
	        type: 'list',  
	        name: 'choice',  
	        message: '请选择一个选项:',  
	        choices: choices,  
	    },  
	]).then(answers => {  
	    console.log(`你选择的选项是:${answers.choice}`);  
	});
  1. 密码输入:用于收集敏感信息,如密码。
代码语言:javascript
复制
	inquirer.prompt([  
	    {  
	        type: 'password',  
	        name: 'password',  
	        message: '请输入密码:',  
	        mask: '*', // 输入时显示的掩码字符  
	    },  
	]).then(answers => {  
	    console.log(`你输入的密码是:${answers.password}`); // 注意:在实际应用中,不应该在控制台输出密码  
	});
  1. 确认:用于让用户确认某个操作。
代码语言:javascript
复制
	inquirer.prompt([  
	    {  
	        type: 'confirm',  
	        name: 'confirmAction',  
	        message: '你确定要执行这个操作吗?',  
	    },  
	]).then(answers => {  
	    if (answers.confirmAction) {  
	        console.log('用户确认执行操作');  
	    } else {  
	        console.log('用户取消执行操作');  
	    }  
	});

inquirer 还提供了许多高级功能,如嵌套 prompt、动态生成 prompt 等。这些功能可以让你创建出更加复杂和灵活的命令行交互。

例如,你可以根据用户的上一个选择来动态生成下一个 prompt 的选项:

代码语言:javascript
复制
	inquirer.prompt([  
	    {  
	        type: 'list',  
	        name: 'category',  
	        message: '请选择一个分类:',  
	        choices: ['水果', '蔬菜'],  
	    },  
	    {  
	        type: 'list',  
	        name: 'item',  
	        when: answers => answers.category === '水果', // 当 category 为 "水果" 时才显示这个 prompt  
	        message: '请选择一个水果:',  
	        choices: ['苹果', '香蕉', '橙子'],  
	    },  

	]).then(answers => {  
	    console.log(`你选择的分类是:${answers.category}`);  
	    if (answers.item) {  
	        console.log(`你选择的水果是:${answers.item}`);  
	    }  
	});

在这个示例中,我们使用了 when 属性来指定一个条件函数。只有当这个函数返回 true 时,对应的 prompt 才会被显示。这样,我们就可以根据用户的上一个选择来动态地生成下一个 prompt 的选项。

3,inquirer 中的问题格式

代码语言:javascript
复制
const inquirer = require('inquirer');

inquirer
  .prompt([
    {
      // 问题类型,可以是
      // input, number, password, list, confirm, rawlist, expand, checkbox, editor
      type: 'input',

      // 问题的名称,用于在答案对象中引用该问题的答案
      name: 'username',

      // 问题的提示信息
      message: '请输入用户名:',

      // (可选)问题的默认答案
      default: 'guest',

      // (可选,仅适用于 list, rawlist, expand, checkbox 类型)问题的可选答案
      choices: [],

      // (可选)验证用户答案的函数,接收答案作为参数,返回布尔值或字符串
      validate: function (value) {
        // 如果返回 true,则表示答案有效
        // 如果返回字符串,则表示答案无效,并显示字符串作为错误信息
      },

      // (可选)处理用户答案的函数,接收答案作为参数,返回处理后的答案
      filter: function (value) {
        // 返回处理后的答案
      },

      // (可选)根据前面的答案决定是否提问当前问题的函数,接收前面的答案对象作为参数,返回布尔值
      when: function (answers) {
        // 如果返回 true,则提问当前问题
        // 如果返回 false,则跳过当前问题
      }

     //(可选)转换答案显示的函数,接收答案和答案对象作为参数,返回转换后的答案
      transformer: function (value, answers) {
        // 返回转换后的答案,例如:return value.toUpperCase();
      },

      // (可选,仅适用于 list, rawlist, expand, checkbox 类型)指定每页显示的选项数量
      pageSize: 10,

      // (可选)为问题的提示信息添加前缀
      prefix: '[?]',

      // (可选)为问题的提示信息添加后缀
      suffix: ':'

    }
  ])
  .then((answers) => {
    // 使用用户答案进行操作
  });

4,inquirer.js 中的9种问题类型

下面我们将详细介绍 Inquirer 的这9种问题类型以及它们的用法:

1. input

input 类型用于提供一行文本输入。用户可以输入任意文本作为答案。

示例:

代码语言:javascript
复制
{
  type: 'input',
  name: 'name',
  message: '请输入你的名字:'
}

2. number

number 类型用于提供一行数字输入。用户可以输入一个数字作为答案。

示例:

代码语言:javascript
复制
{
  type: 'number',
  name: 'age',
  message: '请输入你的年龄:'
}

3. password

password 类型用于提供一行密码输入。用户输入的内容将会被隐藏,以保护隐私。

示例:

代码语言:javascript
复制
{
  type: 'password',
  name: 'password',
  message: '请输入你的密码:'
}

4. list

list 类型用于提供一个列表选择。用户可以从列表中选择一个选项作为答案。需要设置 choices 属性来提供可选答案。

示例:

代码语言:javascript
复制
{
  type: 'list',
  name: 'color',
  message: '请选择你喜欢的颜色:',
  choices: ['红色', '绿色', '蓝色']
}

5. confirm

confirm 类型用于提供一个确认选择。用户可以选择 "yes" 或 "no" 作为答案。

示例:

代码语言:javascript
复制
{
  type: 'confirm',
  name: 'continue',
  message: '是否继续?',
  default: true
}

6. rawlist

rawlist 类型用于提供一个原始列表选择。与 list 类型相似,但用户需要输入列表中选项对应的数字来选择答案。需要设置 choices 属性来提供可选答案。

示例:

代码语言:javascript
复制
{
  type: 'rawlist',
  name: 'color',
  message: '请选择你喜欢的颜色:',
  choices: ['红色', '绿色', '蓝色']
}

7. expand

expand 类型用于提供一个扩展列表选择。用户可以输入选项对应的键来选择答案。需要设置 choices 属性来提供可选答案,并为每个选项设置 key 属性。

示例:

代码语言:javascript
复制
{
  type: 'expand',
  name: 'color',
  message: '请选择你喜欢的颜色:',
  choices: [
    { key: 'r', name: '红色' },
    { key: 'g', name: '绿色' },
    { key: 'b', name: '蓝色' }
  ]
}

8. checkbox

checkbox 类型用于提供一个复选框选择。用户可以选择多个选项作为答案。需要设置 choices 属性来提供可选答案。

示例:

代码语言:javascript
复制
{
  type: 'checkbox',
  name: 'languages',
  message: '请选择你掌握的编程语言:',
  choices: ['JavaScript', 'Python', 'Java', 'C++']
}

9. editor

editor 类型用于提供一个编辑器选择。用户可以在系统默认编辑器中输入或编辑文本作为答案。

示例:

代码语言:javascript
复制
{
  type: 'editor',
  name: 'bio',
  message: '请简要介绍一下你自己:'
}

5,inquirer.js 输入后怎么处理

在 Inquirer 中,处理用户输入的主要方式是通过 then 方法的回调函数来获取用户的答案,然后根据答案进行相应的处理。答案是一个对象,其中的键是问题的 name,值是用户的答案。

例如:

代码语言:javascript
复制
const inquirer = require('inquirer');

inquirer
  .prompt([
    {
      type: 'input',
      name: 'name',
      message: 'What\'s your name?'
    },
    {
      type: 'confirm',
      name: 'continue',
      message: 'Do you want to continue?',
      default: true
    }
  ])
  .then((answers) => {
    console.log(`Hello, ${answers.name}!`);
    if (answers.continue) {
      console.log('Let\'s continue!');
    } else {
      console.log('Goodbye!');
    }
  });

在这个例子中,我们首先通过 prompt 方法提出两个问题,然后在 then 方法的回调函数中获取用户的答案并进行处理。如果用户选择继续,我们打印 "Let's continue!",否则打印 "Goodbye!"。

此外,Inquirer 还提供了一些高级的用法来处理用户的答案,比如:

  • 使用 validate 属性来验证用户的答案。这是一个函数,接收用户的答案作为参数,并返回一个布尔值或字符串。如果返回 true,则表示答案有效;如果返回字符串,表示答案无效,并显示返回的字符串作为错误信息。
  • 使用 filter 属性来处理用户的答案。这是一个函数,接收用户的答案作为参数,并返回处理后的答案。
  • 使用 transformer 属性来转换答案的显示。这是一个函数,接收答案和答案对象作为参数,并返回转换后的答案。

通过这些方法,你可以对用户的答案进行详细的处理和控制。

6,实战:使用 Inquirer.js 实现一个简单的命令行计算器功能

下面我们将使用 Inquirer.js 实现一个简单的命令行计算器功能。用户可以选择要执行的运算类型(加、减、乘、除)以及输入两个数字,程序将返回计算结果。

代码语言:javascript
复制
const inquirer = require('inquirer');

inquirer
  .prompt([
    {
      type: 'list',
      name: 'operation',
      message: '请选择要执行的运算类型:',
      choices: ['加法', '减法', '乘法', '除法']
    },
    {
      type: 'number',
      name: 'num1',
      message: '请输入第一个数字:'
    },
    {
      type: 'number',
      name: 'num2',
      message: '请输入第二个数字:'
    }
  ])
  .then((answers) => {
    let result;

    switch (answers.operation) {
      case '加法':
        result = answers.num1 + answers.num2;
        break;
      case '减法':
        result = answers.num1 - answers.num2;
        break;
      case '乘法':
        result = answers.num1 * answers.num2;
        break;
      case '除法':
        result = answers.num1 / answers.num2;
        break;
    }

    console.log(`运算结果为:${result}`);
  });

在这个例子中,我们首先使用 list 类型的问题让用户选择运算类型,然后使用 number 类型的问题让用户输入两个数字。接下来,我们在 then 方法的回调函数中根据用户选择的运算类型进行计算,并打印计算结果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装 Inquirer
  • 2. 使用 Inquirer
  • 3,inquirer 中的问题格式
  • 4,inquirer.js 中的9种问题类型
    • 1. input
      • 2. number
        • 3. password
          • 4. list
            • 5. confirm
              • 6. rawlist
                • 7. expand
                  • 8. checkbox
                    • 9. editor
                    • 5,inquirer.js 输入后怎么处理
                    • 6,实战:使用 Inquirer.js 实现一个简单的命令行计算器功能
                    相关产品与服务
                    命令行工具
                    腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档