node.js 命令行交互工具(最新版) inquirer.js 实用教程

简介: node.js 命令行交互工具(最新版) inquirer.js 实用教程

inquirer 官网

https://www.npmjs.com/package/inquirer

创建 inquirer 的演示项目

  1. 新建文件夹 inquirerDemo
  2. 在 inquirerDemo文件夹中打开命令行,执行
npm init -y

会自动生成 package.json

  1. 安装 inquirer
cnpm install --save inquirer

cnpm 的朋友先执行 npm i cnpm

  1. 在package.json中添加项目启动脚本
"start": "node index.js",


  1. 在package.json中添加对ES6模块化规范的支持
    以便代码中可以使用 import 导入依赖
"type": "module",

此时 package.json 的完整代码如下:

(当时最新的 “inquirer” 版本为 “^9.0.2”)

{
  "name": "inquirerdemo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "inquirer": "^9.0.2"
  }
}

  1. 在文件夹 inquirerDemo中创建文件 index.js ,内容为:
import inquirer from "inquirer";

inquirer
  .prompt([
    {
      type: "input",
      message: "请输入您的姓名:",
      name: "name",
    },
  ])
  .then((answers) => {
    console.log(answers);
  });

  1. 启动项目
npm run start

输入姓名会回车,此处以我的昵称朝阳为例:

项目创建并运行成功!

导入 inquirer 依赖

import inquirer from "inquirer";

提示用户输入 input

inquirer
  .prompt([
    {
      type: "input", // 交互类型
      message: "请输入您的姓名:", // 引导词
      name: "name", // 自定义的字段名
      default: "朝阳", // 设定默认值
    },
  ])
  .then((answers) => {
    // 打印用户输入的内容
    console.log(answers);
  });

  • 对输入内容进行校验
inquirer
  .prompt([
    {
      type: "input",
      message: "请输入一个数字:",
      name: "num",
      validate: function (val) {
        const done = this.async();
        if (val > 18) {
          done(null, true);
        }
        done("数字不能小于18!");
      },
    },
  ])
  .then((answers) => {
    // 打印用户输入的内容
    console.log(answers);
  });

与用户确认 confirm

inquirer
  .prompt([
    {
      type: "confirm", // 交互类型 -- 确认
      message: "是否男性?", // 引导词
      name: "genderConfirm", // 自定义的字段名
      prefix: "系统管理员:", // 前缀
      suffix: "必答题", // 后缀
    },
  ])
  .then((answers) => {
    // 打印用户输入的内容
    console.log(answers);
  });

无序单选 list

inquirer
  .prompt([
    {
      type: "list", // 交互类型 -- 单选(无序)
      message: "请选择一种水果:", // 引导词
      name: "fruit", // 自定义的字段名
      choices: ["苹果", "梨子", "香蕉"], // 选项列表
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

上下方向键可以调整选项,回车键确认选择

有序单选 rawlist

inquirer
  .prompt([
    {
      type: "rawlist", // 交互类型 -- 有序单选
      message: "请选择一种水果:", // 引导词
      name: "fruit", // 自定义的字段名
      choices: ["苹果", "梨子", "香蕉"], // 选项列表
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

可直接输入序号,如3,来选择香蕉

也可以上下方向键可以调整选项,回车键确认选择

带索引的单选 expand

inquirer
  .prompt([
    {
      type: "expand", // 交互类型 -- 带索引的单选
      message: "请选择一种水果:", // 引导词
      name: "fruit", // 自定义的字段名
      // 选项列表
      choices: [
        {
          key: "a",
          name: "苹果",
          value: "apple",
        },
        {
          key: "O",
          name: "橘子",
          value: "orange",
        },
        {
          key: "p",
          name: "梨子",
          value: "pear",
        },
      ],
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

输入 a会选中苹果

输入 o会选中橘子

输入 p会选中梨子

输入 h后回车会显示所有选项

若直接回车,也会显示所有选项

输入正确的索引值回车即可得到最终结果

多选 checkbox

inquirer
  .prompt([
    {
      type: "checkbox", // 交互类型 -- 多选
      message: "选择颜色:", // 引导词
      name: "color", // 自定义的字段名
      // 选项列表
      choices: [
        {
          name: "红色",
        },
        new inquirer.Separator(), // 默认分隔符
        {
          name: "蓝色",
          checked: true, // 默认选中
        },
        {
          name: "绿色",
        },
        new inquirer.Separator("--- 自定义的分隔符 ---"), // 自定义分隔符
        {
          name: "黄色",
        },
      ],
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

默认蓝色已选中

按空格键进行选中

上下方向键可以调整选项前的箭头 >

回车键打印最终选择结果

  • 可滚动的多选
inquirer
  .prompt([
    {
      type: "checkbox", // 交互类型 -- 多选
      message: "选择颜色:", // 引导词
      name: "color", // 自定义的字段名
      // 选项列表
      choices: ["红色", "蓝色", "绿色", "黄色"],
      pageSize: 2, // 设置选项展示的行数
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

上下方向键可以调整选项前的箭头 >,超出行数的选项会循环轮播展示

输入密码 password

inquirer
  .prompt([
    {
      type: "password", // 交互类型 -- 密码
      message: "请输入密码:", // 引导词
      name: "pwd", // 自定义的字段名
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

输入密码时,密码的输入过程不可见

输完密码按回车后,打印输入的密码

编辑器(可多行输入) editor

inquirer
  .prompt([
    {
      type: "editor", // 交互类型 -- 编辑器(可多行输入)
      message: "请输入备注:", // 引导词
      name: "content", // 自定义的字段名
    },
  ])
  .then((answers) => {
    // 打印结果
    console.log(answers);
  });

按回车后,会创建并打开一个临时记事本

输入任意内容后,关闭记事本,会打印出输入的内容

 

目录
打赏
0
0
0
0
63
分享
相关文章
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
47 9
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
603 24
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
134 1
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
77 2
2024年5月node.js安装(winmac系统)保姆级教程
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
103 9
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
172 2
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
72 1
JavaScript中的原型 保姆级文章一文搞懂
|
5月前
JS+CSS3文章内容背景黑白切换源码
JS+CSS3文章内容背景黑白切换源码是一款基于JS+CSS3制作的简单网页文章文字内容背景颜色黑白切换效果。
46 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等