Node.js 中的交互式命令行:玩转 Inquirer.js
2024-04-26 17:33:38 软件 189观看
摘要嘿,会Node.js 的小伙伴们!今天咱们来聊聊一个超级实用的 Node.js 库——inquirer.js。如果你想要让你的命令行工具变得交互式,那这个库绝对是你的不二之选。它能让你轻松创建出美观、易用的文本界面,让用户的输入体验更上

嘿,会Node.js 的小伙伴们!今天咱们来聊聊一个超级实用的 Node.js 库——inquirer.js。如果你想要让你的命令行工具变得交互式,那这个库绝对是你的不二之选。它能让你轻松创建出美观、易用的文本界面,让用户的输入体验更上一层楼。ixx28资讯网——每日最新资讯28at.com

安装 Inquirer.js

安装起来也是分分钟的事,用 npm 或 yarn 都可以:ixx28资讯网——每日最新资讯28at.com

npm install inquirer

或者ixx28资讯网——每日最新资讯28at.com

yarn add inquirer

快速上手

安装完了,咱们就可以开始玩耍了。先来个简单的示例,看看 inquirer.js 是怎么用的:ixx28资讯网——每日最新资讯28at.com

const inquirer = require('inquirer');const questions = [{   type: 'input',   name: 'username',   message: '嘿,你叫啥呀?',},{   type: 'password',   name: 'password',   message: '密码悄悄告诉我:',},];inquirer.prompt(questions).then(answers => { console.log('用户名:', answers.username); console.log('密码:', answers.password);});

这段代码里,咱们定义了两个问题:用户名和密码。type 参数告诉 inquirer.js 我们想要的输入类型,name 是问题的答案名称,message 是咱们要问用户的问题。ixx28资讯网——每日最新资讯28at.com

丰富的问题类型

inquirer.js 提供了一大堆问题类型,满足各种不同的需求:ixx28资讯网——每日最新资讯28at.com

输入(Input)

就是普通的文本输入。ixx28资讯网——每日最新资讯28at.com

{ type: 'input', name: 'name', message: '你的名字是啥?',}

密码(Password)

和输入一样,但输入的内容不会显示出来。ixx28资讯网——每日最新资讯28at.com

{ type: 'password', name: 'password', message: '密码多少呀?',}

确认(Confirm)

用户可以通过输入 y 或 n 来回答“是”或“否”。ixx28资讯网——每日最新资讯28at.com

{ type: 'confirm', name: 'continue', message: '咱们继续吗?',}

列表(List)

让用户从列表里挑一个。ixx28资讯网——每日最新资讯28at.com

{ type: 'list', name: 'theme', message: '选个主题呗:', choices: ['亮堂的', '暗夜的', '自定义的'],}

下拉列表(Expand)

下拉列表,用户可以用方向键选择多个选项。ixx28资讯网——每日最新资讯28at.com

{ type: 'expand', name: 'abilities', message: '超能力选哪个?', choices: [  {     key: 'p',     name: '力大无穷',     value: 'power',  },  {     key: 's',     name: '快如闪电',     value: 'speed',  },   // 更多选项...],}

编辑器(Editor)

这个厉害了,让用户在外部编辑器里写东西。ixx28资讯网——每日最新资讯28at.com

{  type: 'editor',  name: 'bio',  message: '来,写个自我介绍:',}

处理用户的回答

inquirer.prompt() 方法返回一个 Promise,用户一提交答案,Promise 就会带着所有答案的对象来解析。你可以拿这些答案去做各种酷炫的事。ixx28资讯网——每日最新资讯28at.com

inquirer.prompt(questions).then(answers => {  // 用 answers 对象干点啥  console.log('用户名:', answers.username);});

动态提问

有时候,你可能想问的问题取决于用户之前的回答。inquirer.js 支持这种智能模式,用 when 属性就能搞定。ixx28资讯网——每日最新资讯28at.com

const questions = [  {    type: 'confirm',    name: 'hasAccount',    message: '有账户不?',  },  {    type: 'input',    name: 'username',    message: '用户名是啥?',    when: answers => answers.hasAccount  },  {    type: 'input',    name: 'email',    message: '邮箱地址呢?',    when: answers => !answers.hasAccount  }];

在这个例子里,用户名的输入框会不会显示,取决于用户对 hasAccount 的回答。ixx28资讯网——每日最新资讯28at.com

装饰你的命令行

inquirer.js 还让你能通过 prefix 属性来加个前缀,或者用 transformer 函数来美化显示给用户的答案。ixx28资讯网——每日最新资讯28at.com

{  type: 'input',  name: 'name',  message: '叫啥?',  prefix: '称呼:',  transformer: input => `你好啊,${input}!`,}

和其他 Node.js 工具一起玩

inquirer.js 可以和其他 Node.js 工具一起用,比如和 cross-spawn 模块搭配,根据用户的回答执行不同的命令。ixx28资讯网——每日最新资讯28at.com

const { spawn } = require('cross-spawn');inquirer.prompt([  {    type: 'list',    name: 'action',    message: '想干点啥?',    choices: ['装点依赖', '跑个测试', '撤了'],  },]).then(answers => {  const command = answers.action === '装点依赖' ? 'npm install' : 'npm test';  spawn.sync(command, [], { stdio: 'inherit' });});

总结

inquirer.js 是一个功能超群的库,能让你的命令行工具变得既强大又用户友好。无论是简单的数据收集,还是复杂的多步骤交互,inquirer.js 都能帮你搞定。今天咱们学了 inquirer.js 的基本用法,现在你应该对这个库有个大概的了解了。ixx28资讯网——每日最新资讯28at.com

ixx28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-85867-0.htmlNode.js 中的交互式命令行:玩转 Inquirer.js

声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。

显示全文

上一篇:Rust 机器学习,一定要知道的这些库,可以替代 Python 库了

下一篇:写了个插件,一口气解决项目中所有精度丢失问题!

最新热点