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);
  });

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

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

 

目录
相关文章
|
3月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
73 1
|
2天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
24 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
1月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
93 5
|
3月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
51 2
2024年5月node.js安装(winmac系统)保姆级教程
|
2月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
77 9
|
3月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
75 3
|
3月前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
59 1
|
3月前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
3月前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
60 4
|
3月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
61 4

热门文章

最新文章