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

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

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

 

目录
相关文章
|
1天前
|
人工智能 监控 前端开发
基于 Next.js 的书法字体生成工具架构设计与 SSR 优化实践
本项目是一款书法字体生成工具,采用 Next.js 14(App Router)与 Tailwind CSS 构建前端,阿里云 Serverless 部署后端。通过混合渲染策略(SSG/SSR/CSR)、Web Worker 异步计算及 CDN 字体分片加载优化性能。服务端借助阿里云函数计算处理计算密集型任务,将平均耗时从 1200ms 降至 280ms,支持 1000+ QPS。动态路由与 ARMS 监控提升工程化水平,未来计划引入 WebGPU 和 AI 字体风格迁移技术,进一步优化用户体验。
|
6月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
158 1
|
2月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
1196 24
|
3月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
120 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
6月前
|
JavaScript
如何使用内存快照分析工具来分析Node.js应用的内存问题?
需要注意的是,不同的内存快照分析工具可能具有不同的功能和操作方式,在使用时需要根据具体工具的说明和特点进行灵活运用。
193 62
|
5月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
1511 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
4月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
376 5
|
6月前
|
Web App开发 JavaScript 前端开发
2024年5月node.js安装(winmac系统)保姆级教程
本篇博客为2024年5月版Node.js安装教程,适用于Windows和Mac系统。作者是一名熟悉JavaScript与Vue的大一学生,分享了Node.js的基本介绍、下载链接及简单安装步骤。安装完成后,通过终端命令`node -v`验证版本即可确认安装成功。欢迎关注作者,获取更多技术文章。
95 2
2024年5月node.js安装(winmac系统)保姆级教程
|
5月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
109 9
|
6月前
|
缓存 JavaScript 前端开发
JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用
本文深入讲解了 JavaScript 与 DOM 交互的基础及进阶技巧,涵盖 DOM 获取、修改、创建、删除元素的方法,事件处理,性能优化及与其他前端技术的结合,助你构建动态交互的网页应用。
178 5