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

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

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

 

目录
相关文章
|
19天前
|
JavaScript 前端开发 安全
【逆向】Python 调用 JS 代码实战:使用 pyexecjs 与 Node.js 无缝衔接
本文介绍了如何使用 Python 的轻量级库 `pyexecjs` 调用 JavaScript 代码,并结合 Node.js 实现完整的执行流程。内容涵盖环境搭建、基本使用、常见问题解决方案及爬虫逆向分析中的实战技巧,帮助开发者在 Python 中高效处理 JS 逻辑。
|
4月前
|
机器学习/深度学习 JavaScript 前端开发
JS进阶教程:递归函数原理与篇例解析
通过对这些代码示例的学习,我们已经了解了递归的原理以及递归在JS中的应用方法。递归虽然有着理论升华,但弄清它的核心思想并不难。举个随手可见的例子,火影鸣人做的影分身,你看到的都是同一个鸣人,但他们的行为却能在全局产生影响,这不就是递归吗?雾里看花,透过其间你或许已经深入了递归的魅力之中。
162 19
|
6月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
461 9
|
7月前
|
资源调度 JavaScript 前端开发
前端开发必备!Node.js 18.x LTS保姆级安装教程(附国内镜像源配置)
本文详细介绍了Node.js的安装与配置流程,涵盖环境准备、版本选择(推荐LTS版v18.x)、安装步骤(路径设置、组件选择)、环境验证(命令测试、镜像加速)及常见问题解决方法。同时推荐开发工具链,如VS Code、Yarn等,并提供常用全局包安装指南,帮助开发者快速搭建高效稳定的JavaScript开发环境。内容基于官方正版软件,确保合规性与安全性。
5906 24
|
8月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
248 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
9月前
|
存储 资源调度 JavaScript
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具
npm、cnpm 和 pnpm 是三种常用的 Node.js 包管理工具。npm 是官方默认的包管理器,提供依赖管理、安装和更新等功能;cnpm 是由阿里巴巴开发的 npm 镜像,专为中国大陆用户优化,解决下载速度慢的问题;pnpm 通过硬链接技术提高安装速度并节省磁盘空间,特别适合磁盘资源紧张的环境。三者命令类似,但各有特色,开发者可根据需求选择合适的工具。
901 5
|
10月前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
152 9
|
JavaScript 数据安全/隐私保护
node.js 命令行的命令注册和配置工具(最新版) commander.js 实用教程(含自研脚手架的创建流程)
node.js 命令行的命令注册和配置工具(最新版) commander.js 实用教程(含自研脚手架的创建流程)
361 0
|
测试技术 Linux API
开发一个Node命令行小玩具全过程--高颜统计工具
命令行工具对于我们来说非常的熟悉,一些命令行的操作也极大的简化了我们的日常工作。本文就基于我写的一个Node命令行代码计数器来进行展开。
开发一个Node命令行小玩具全过程--高颜统计工具

热门文章

最新文章