当前位置: 首页 > article >正文

inquirer 一款命令行交互依赖

一、`inquirer` 简介

`inquirer` 是一个 Node.js 库,用于创建交互式命令行界面,允许你在命令行中向用户提出问题并接收用户的回答,从而实现更具交互性的命令行应用程序。

二、安装 `inquirer`

npm install inquirer

三、基本用法

1. 简单的提问和回答

向用户提出一个问题并接收用户的回答

// 引入 `inquirer` 库

const inquirer = require("inquirer");

inquirer

  // 使用 `prompt` 方法提出一个问题列表

  .prompt([

    {

      type: "input", // 问题类型为输入框

      name: "username", // 存储用户回答的变量名

      message: "What is your name?", // 向用户显示的问题

    },

  ])

  // 当用户回答问题后,使用 `then` 处理用户的回答,`answers` 是一个包含用户回答的对象,这里通过 `answers.username` 获取用户输入的名字。

  .then((answers) => {

    console.log(`Hello, ${answers.username}!`);

  });

2. 多种问题类型

2.1 列表选择

inquirer

  .prompt([

    {

      type: "list", // 问题类型为列表选择

      name: "language",

      message: "What is your favorite programming language?",

      choices: ["JavaScript", "Python", "Java", "C++"], // 提供可供用户选择的选项列表

    },

  ])

  .then((answers) => {

    console.log(`You chose ${answers.language}.`);

  });

2.2 确认问题

inquirer

  .prompt([

    {

      type: "confirm", // 问题类型为确认,用户可以回答 `y` 或 `n`

      name: "continue",

      message: "Do you want to continue?",

      default: true, // 默认答案为 `true`

    },

  ])

  .then((answers) => {

    if (answers.continue) {

      console.log("Continuing...");

    } else {

      console.log("Stopping...");

    }

  });

2.3 密码输入

inquirer

  .prompt([

    {

      type: "password", // 问题类型为密码输入,用户输入的内容将被隐藏

      name: "password",

      message: "Enter your password:",

    },

  ])

  .then((answers) => {

    console.log(`Your password is ${answers.password}.`);

  });

2.4 复选框

inquirer

  .prompt([

    {

      type: "checkbox", // 问题类型为复选框,用户可以选择多个选项

      name: "technologies",

      message: "What technologies do you know?",

      choices: ["Node.js", "React", "Vue", "Angular"],

    },

  ])

  .then((answers) => {

    console.log(`You know: ${answers.technologies.join(", ")}.`);

  });

四、高级用法

1. 验证用户输入

inquirer

  .prompt([

    {

      type: "input",

      name: "age",

      message: "How old are you?",

      // 添加验证函数,使用 `isNaN` 检查输入是否为数字,若不是则返回错误消息

      validate: function (value) {

        const valid = !isNaN(parseFloat(value));

        return valid || "Please enter a number";

      },

      filter: Number, // 使用 `filter` 将输入转换为数字

    },

  ])

  .then((answers) => {

    console.log(`You are ${answers.age} years old.`);

  });

2. 动态问题

可以根据用户的回答动态生成问题

inquirer

  .prompt([

    {

      type: "list",

      name: "action",

      message: "What do you want to do?",

      choices: ["Create", "Update", "Delete"],

    },

  ])

  .then((answers) => {

    if (answers.action === "Create") {

      return inquirer.prompt([

        {

          type: "input",

          name: "item",

          message: "What do you want to create?",

        },

      ]);

    }

  })

  .then((answers) => {

    if (answers) {

      console.log(`You want to create ${answers.item}.`);

    }

  });


http://www.kler.cn/a/528984.html

相关文章:

  • AI协助探索AI新构型的自动化创新概念
  • C++:虚函数与多态性习题2
  • vue虚拟列表优化前端性能
  • JVM运行时数据区域-附面试题
  • 【C++】List的模拟实现
  • 分布式系统架构怎么搭建?
  • MINIRAG: TOWARDS EXTREMELY SIMPLE RETRIEVAL-AUGMENTED GENERATION论文翻译
  • leetcode 2080. 区间内查询数字的频率
  • 将markdown文件和LaTex公式转为word
  • 如何编写地信测绘信息相关的综述论文-总结版本
  • 6.攻防世界php_rce
  • 【华为OD-E卷 - 连续出牌数量 100分(python、java、c++、js、c)】
  • 洛谷P2660 zzc 种田
  • 看深度求索如何思索自己的未来
  • 大模型培训讲师老师叶梓分享:DeepSeek多模态大模型janus初探
  • 并发模式:驾驭多线程的艺术
  • 修改题注标签
  • 架构技能(四):需求分析
  • linux为什么不是实时操作系统
  • LeGO LOAM坐标系问题的自我思考
  • Brave132 编译指南 Windows 篇:部署 depot_tools(三)
  • 【LeetCode 刷题】二叉树-修改与构造
  • Diffusion--人工智能领域的革命性技术
  • Node.js——body-parser、防盗链、路由模块化、express-generator应用生成器
  • C++中的析构器(Destructor)(也称为析构函数)
  • 01-六自由度串联机械臂(ABB)位置分析