首页/新闻资讯/正文详情

Enquirer Prompt 文档指南:从实例属性、事件系统到 Question/Choice 对象与布局选项

发布时间:2026/9/27 7:29:25 来源:云帆数科 栏目:资讯中心
Enquirer Prompt 文档指南:从实例属性、事件系统到 Question/Choice 对象与布局选项
开发工具【免费下载链接】enquirerStylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, airbnb/nimbus, and more! Please follow Enquirers author: https://github.com/jonschlinkert项目地址https://gitcode.com/gh_mirrors/en/enquirer点击查看免费下载Enquirer 是一款“漂亮、直观且易用”的终端交互提示prompt库本文以仓库support/docs.md的开发者文档为主线系统性梳理其实例属性input/output/rl、事件体系keypress/state/run/submit/abort、静态属性和方法、Question/Choice 对象规范以及options.header等渲染区域布局并结合lib/prompt.js、lib/state.js、lib/combos.js、lib/keypress.js等源码与examples/目录下的真实用例帮助你理解 Enquirer 的内部机制并写出可复用的自定义 prompt。适用前提本文描述以当前仓库Enquirer 2.x 分支源码为准。运行示例前请确保已安装依赖npm install并在支持 TTY 的终端中执行。可插拔Pluggable架构Enquirer 的底座是“可插拔”设计用插件plugin为 prompt 增加高级能力官方文档列举了autofill、history和debounce三类典型插件场景。其中autofill属于内置能力——在 index.js 的ask()流程中当opts.autofill存在且答案已有值时会把prompt.value prompt.input value直接回填autofill show时仍渲染并提交 prompt否则静默跳过history与debounce则通过 register() 注册的插件函数挂载到 Enquirer 实例上use(plugin)index.js是安装插件的人口。仓库中提供了完整的自定义插件示例可对照阅读examples/enquirer/custom-prompt-plugin-class.js以类方式扩展 Prompt 的插件examples/enquirer/custom-prompt-plugin-function.js以函数方式扩展 Prompt 的插件examples/autofill-plugin.jsautofill 插件的实现参考性能基准docs.md给出了三个库的加载时间对比当前仓库记录的基准值不代表任何运行环境的绝对结论库加载时间enquirer5.190msinquirer254.054msprompts14.236ms仓库 perf/ 目录保留了对应的基准脚本perf/enquirer.js、perf/inquirer.js、perf/prompts.js可在本机复测验证。实例属性Instance Properties每个Prompt实例在构造时lib/prompt.js初始化了三个核心 I/O 属性属性默认值说明prompt.inputprocess.stdin或options.input输入流按键事件来源prompt.outputprocess.stdout或options.output输出流渲染目标prompt.rl由 input/output 创建的 readline 接口readline 接口见 keypress.js 的readline.createInterface此外实例上还挂着以下常用属性prompt.cursor光标在prompt.typed实为input字符串中的位置。底层由 lib/prompt.js 的 getter/setter 代理到this.state.cursorlib/state.js 初始值为0。prompt.initial初始值取options.initial与options.default中第一个非空值lib/prompt.js。prompt.value最终值其 getter 在state.input/state.value与initial之间做回退lib/prompt.js。prompt.stateState实例承载 statuspending/submitted/cancelled、cursor、value、typed、error 等状态见 lib/state.js。事件体系EventsPrompt继承 Node 的Eventslib/prompt.js事件是观察 prompt 生命周期与按键的最主要方式。按键层事件事件触发时机state输入流发出 keypress 时由 prompt 发出同时携带prompt.state()的克隆对象含 status、cursor、value、typed、error 等keypress输入流发出 keypress 时由 prompt 发出在 lib/prompt.js 的keypress()中可以看到完整链路先把原始输入归一化为 key 对象keypress.action(input, keypress(input, event), ...)存入this.state.keypress随后先emit(keypress, input, key)再emit(state, this.state.clone())。state事件与keypress同时触发但state附带的是 lib/state.jsclone()出来的快照对象。文档示例support/docs.md展示了如何累积全部按键const { Prompt } require(enquirer); const prompt new Prompt({ name: username, message: What is your username? }); const keypresses []; prompt.on(keypress, (s, key) keypresses.push(key)); prompt.run() .then(() console.log(keypresses)) .catch(console.log);生命周期事件事件名说明run.run()被调用、readline 接口创建完成后触发lib/prompt.js 中initialize()之后emit(run)keypress每次按键触发回调签名(s, key)state与keypress同时触发携带prompt.state()的快照submit提交成功时触发参数为最终 valuelib/prompt.jsabort出错或用户提前终止会话时触发submit的完整路径在 lib/prompt.js先执行options.onSubmit若定义再调用validate()失败则渲染错误并alert()lib/prompt.js默认向终端写入响铃码成功后render()、close()、经result()转换后emit(submit, value)。而run()内部lib/prompt.js把submit绑定到 Promise 的 resolve、cancel绑定到 reject因此prompt.run()返回的 Promise 天然具备成功/失败语义。静态属性与方法Prompt 类的自引用静态属性所有 prompt 类都会把自身作为静态 getter 暴露见 lib/prompt.js 的static get prompt()与各子类类似模式这样无论继承链多深都能直接访问到特定类class MultiSelect { static get MultiSelect() { return MultiSelect; } } class SomePrompt extends MultiSelect {} class OtherPrompt extends SomePrompt {} console.log(OtherPrompt.MultiSelect MultiSelect); // trueEnquirer 顶层静态入口Enquirer 类本身还暴露了便捷的静态入口index.jsEnquirer.prompt函数式入口直接const { prompt } require(enquirer); await prompt({...})。Enquirer.prompt[type]与Enquirer[type]为每个注册类型如select、input生成options new Prompt(options).run()的快捷函数。Enquirer.prompts所有内置 prompt 类的集合见 lib/prompts/index.jsAutoComplete、BasicAuth、Confirm、Editable、Form、Input、Invisible、List、MultiSelect、Numeral、Password、Scale、Select、Snippet、Sort、Survey、Text、Toggle、Quiz。Enquirer.types五个基础类型类lib/types/index.jsArrayPrompt、AuthPrompt、BooleanPrompt、NumberPrompt、StringPrompt。docs.md中的“All properties / All options / Events”三张表格在原文档中为待填充的占位表格无实际条目本文不臆造其内容。API 与基础类型Base types内置 prompt 按行为抽象为五类基础类型docs.mdArray prompts基于ArrayPromptlib/types/array.js的选择类 prompt——Select、MultiSelect、AutoComplete、Editable、Form、Snippet、Sort、Survey 等负责选项列表的遍历、选中、多选与分组。Boolean prompts基于BooleanPromptlib/types/boolean.js的确认类 prompt——Confirm、Toggle。Number prompts基于NumberPromptlib/types/number.js的数字输入类 prompt——Numeral 等。String prompts基于StringPromptlib/types/string.js的自由文本类 prompt——Input、Invisible、Password、List、Text 等。Date prompts文档中以删除线标注Date prompts即该类型已不再提供。以StringPrompt为例其render()lib/types/string.js把prefix、message、separator拼接为state.prompt再叠加header、格式化后的 input含 hint/error、footer后写入缓冲区这一渲染顺序与后文“布局区域”一一对应。Question 对象Enquirer.prompt()接受单个 Question 对象或 Question 数组index.js按顺序逐个执行并聚合到answers。Question 对象实现如下接口interface Question { type: string; name: string; message: string; }三个核心属性type{string}决定运行哪种 prompt。Enquirer 据此查表this.prompts[type]未注册类型会直接断言报错index.js注意type: number会被映射为numeralindex.js。name{string}作为答案对象上的 key。提交后通过set(this.answers, name, value)写入index.js同时会 emitanswer事件。message{string}终端渲染的提示文案。一个完整的选择类 Questiondocs.mdconst question { type: select, name: colors, message: Pick a color, initial: 1, choices: [ { message: Red, value: #ff0000 }, { message: Green, value: #00ff00 }, { message: Blue, value: #0000ff } ] }; const answers await prompt([question]); console.log(answers.colors); // #00ff00这里initial: 1让索引为 1 的Green成为默认选中项返回值使用value字段而非message。Choice 对象选择类 prompt 的每一项都是 Choice 对象docs.mdChoice { name: string; message: string | undefined; value: any | undefined; key: string | undefined; hint: string | undefined; disabled: boolean | undefined; selected: boolean | undefined; }属性类型说明namestring选项唯一 idmessagestring渲染显示的文案valuestring被选中后返回的值aliasstring支持按键快捷方式时使用的单字符对应keyhintstring附加提示errorstring该选项的错误信息disabledboolean是否禁用separatorboolean是否作为分隔线selectedboolean是否已选中别名Aliasestitle是message的别名checked是selected的别名help别名指向hintdocs.md 原表写为help - alias for help从其属性语义推断为提示文案的别名。源码层面ArrayPrompt.toChoice()lib/types/array.js会完成归一化name || key || title || value || message兜底取名、message || name兜底文案、value在value/name中取第一个非空值并挂上index、cursor、parent、level、path、enabled等内部字段字符串简写如Red会自动转为{ name: Red }。disabled: true且无hint时自动补hint (disabled)disabled为字符串时直接作为 hintlib/types/array.js。options.header 与渲染布局主要区域Major positionsdocs.md用两个 ASCII 布局图说明了 prompt 的渲染区域顺序header prefix message separator input suffix body footerheader prefix message separator input suffix - prefix message separator input suffix - prefix message separator input suffix - prefix message separator input suffix - prefix message separator input suffix footer单行 prompt 由上到下依次为header、prefix、message、separator、input、suffix、footer列表型 prompt 则在header与footer之间渲染多行选项每行同样由prefix message separator input suffix组成body是供自定义 prompt 扩展的中间区域。这些区域在源码中的渲染职责分别是header()/footer()仅在status pending时输出lib/prompt.jsprefix()会随 status 切换样式lib/prompt.jsmessage()默认套用styles.stronglib/prompt.jsseparator()默认取符号表中的 pending 态lib/prompt.js。margin选项数字或数组通过 lib/prompt.js 的margin()函数换算为上下左右的空白行。Header 示例通过header选项可在 prompt 上方显示自定义内容。下面两段终端输出展示了带 ASCII 艺术头部与提示框的完整渲染效果第一段为初始状态第二段为用户已输入内容并出现 hint/error 的状态_-----_ | | ╭──────────────────────────╮ |--(o)--| │ Welcome to my awesome │ ---------´ │ generator! │ ( _´U_ ) ╰──────────────────────────╯ /___A___\ / | ~ | __.___.__ ´ |° ´ Y ? Pick a color … (Use arrow keys, press return to submit) ❯ [x] Red Green Blue (Move up and down to reveal more choices)_-----_ | | ╭──────────────────────────╮ |--(o)--| │ Welcome to my awesome │ ---------´ │ generator! │ ( _´U_ ) ╰──────────────────────────╯ /___A___\ / | ~ | __.___.__ ´ |° ´ Y ? Pick a color … Something typed (Use arrow keys, press return to submit) ❯ Red (this is a an error!) Green (this is a hint!) Blue (Move up and down to reveal more choices)注第二段输出中的文案拼写is a an error!为原文档原文此处保留原样。仓库中options.header的完整可运行示例位于 examples/autocomplete/option-header.js、examples/boolean/option-header.js、examples/select/option-header.jsprefix/message/separator/suffix/footer各区域示例见 examples/select/option-elements.js 与 examples/input/option-header-footer.js。媒体目录中的 media/prompt-all-positions.png 与 media/prompt-sections.png 以真实终端截图呈现了上述布局顶部为自定义 headerASCII 头像 Welcome to my awesome generator!提示框下方依次是? Pick your favorite colorsmessage、… inputseparator/input 区、❯指针与多行选项body底部为(Scroll up and down to reveal more choices)footer可直接对照验证各区域的位置关系。剪切/粘贴快捷键docs.md整理了与 Readline 一致的编辑快捷键在可输入型 prompt 中生效命令说明ctrl_撤销Undoctrlc取消当前命令ctrlk剪切光标位置之后的所有内容ctrlw剪切光标左侧的一个单词ctrly粘贴上一次删除的内容ctrld删除光标右侧的一个字符ctrll清空整个终端ctrlu清空当前行ctrlx在行首与光标位置之间切换Windows 补充命令说明alt剪切光标左侧的一个单词altd剪切光标右侧的一个单词这些按键在 lib/combos.js 的动作映射表中可找到源码对应关系ctrlk → cutForward、ctrlw → cutLeft、ctrly → paste、ctrld → deleteForward、ctrlu → undo、ctrlx → toggleCursorlib/combos.jsWindows 的altd → cutRight、alt对应option.left → cutLeftlib/combos.js。而StringPrompt中 cutForward()、cutLeft()、paste()、toggleCursor() 提供了这些动作的实际实现剪切内容存入state.clipboard栈paste从栈顶弹出。按键事件本身由 lib/keypress.js 解析\r→return、\n→enter、\t→tab、\b→backspace、\x1b→escapectrl字母按控制码换算s \x1a分支ANSI 转义序列方向键、功能键则通过fnKeyRe匹配并映射修饰键。搜索与历史快捷键命令说明ctrlr在历史中搜索命令输入搜索词ctrlg取消搜索并恢复原行ctrlj在当前历史条目结束搜索ctrln/ctrl▼取历史中下一条命令ctrlp/ctrl▲取历史中上一条命令这些命令由 Node 原生readline提供本仓库通过 keypress.js 的keypress.listen()创建 readline 接口并开启 raw mode。需要说明docs.md未明确这些快捷键是默认可用还是需自行接入历史源使用ctrlr前请确认运行环境具备历史来源例如 examples/input/option-history.js 所演示的history配置场景。小结实例层prompt.input/prompt.output/prompt.rl构成 I/O 底座cursor、state、value等属性贯穿渲染与提交全流程。事件层keypress/state提供按键级观察run/submit/abort构成生命周期骨架run()返回的 Promise 语义完整。对象模型Questiontype/name/message驱动 prompt 类型与答案聚合Choicename/message/value/disabled/selected 等驱动列表渲染与返回值。布局层header → prefix → message → separator → input → suffix → body → footer是理解 Enquirer 渲染与自定义样式如options.header的基础模型。快捷键层剪切/粘贴与搜索/历史命令均可对照 lib/combos.js 动作映射与 lib/types/string.js 实现验证。更多可运行示例可继续查阅 examples/ 目录与 docs/prompts.md、docs/key-bindings.md、docs/custom-prompts.md以深入实践自定义 prompt 与按键绑定。赞分享开发工具【免费下载链接】enquirerStylish, intuitive and user-friendly prompts. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, airbnb/nimbus, and more! Please follow Enquirers author: https://github.com/jonschlinkert项目地址https://gitcode.com/gh_mirrors/en/enquirer点击查看免费下载相关推荐NodeGui 的 QObject 指南从对象树、属性系统到事件与计时器全解析NodeGui 的 QObject 指南从对象树、属性系统到事件与计时器全解析 QObject 是 Qt 对象模型的基石也是 NodeGui用 Node.桌面应用跨平台SQLAlchemy ORM 事件系统完全指南Session、Mapper、实例与属性事件实战SQLAlchemy ORM 事件系统完全指南Session、Mapper、实例与属性事件实战 导读 本文基于 SQLAlchemy 官方文档 doc/bu数据库后端ORMEnquirer 自定义 Prompt 编写与发布指南从继承 Prompt 基类到 npm 生态分发Enquirer 自定义 Prompt 编写与发布指南从继承 Prompt 基类到 npm 生态分发 本篇技术指南围绕 Enquirer 的 Prompt 体开发工具上一篇Sionna通信仿真库下一代物理层研究的深度学习原生解决方案下一篇AprilTag与OpenCV集成实战实时检测与姿态估计完整教程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

AVStream 模拟硬件示例驱动(Avshws)深度解析:Pin-Centric 捕获驱动与散聚 DMA 的实现范式
AVStream 模拟硬件示例驱动(Avshws)深度解析:Pin-Centric 捕获驱动与散聚 DMA 的实现范式

示例工程 【免费下载链接】Windows-driver-samples This repo contains driver samples prepared for use with Microsoft Visual Studio and the Windows Driver Kit (WDK). It contains both Universal Windows Driver and desktop-only driver samples. 项目地址&#xff1a… · 2026/9/27 7:29:24

广州网站营销别踩坑:3个免费工具解决需求拖延
广州网站营销别踩坑:3个免费工具解决需求拖延

广州网站营销别踩坑:3个免费工具解决需求拖延 改个首页Banner,建站公司拖你整整一周?电话打过去,对方总说“排期紧”、“设计师忙”。别忍了,这种“慢”往往不是技术问题,而是对方在掩盖流程漏洞,甚至是在用“人工审核”为借口,掩盖其低效的交… · 2026/9/27 7:29:18

PaddleSeg 中的 BCELoss 详解:二元交叉熵损失原理、源码实现与配置实战
PaddleSeg 中的 BCELoss 详解:二元交叉熵损失原理、源码实现与配置实战

人工智能计算机视觉预训练 【免费下载链接】PaddleSeg Easy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting,… · 2026/9/27 7:29:18

网站建设商城商城网站建设多少钱2026最新
网站建设商城商城网站建设多少钱2026最新

网站建设商城多少钱别被坑,3类方案对比教你怎么选 改个需求建站公司拖一周,这种经历是不是太熟悉?很多老板找外包做商城,前期沟通挺顺畅,签了合同付了首款,结果上线后想加个优惠券功能,对方报价高得离谱,还不肯动代码。这时候你才意识到, 怎么选… · 2026/9/27 8:10:16

WebAssembly Component Model 性能调优:消除跨边界 Canonical ABI 拷贝开销
WebAssembly Component Model 性能调优:消除跨边界 Canonical ABI 拷贝开销

WebAssembly Component Model 性能调优:消除跨边界 Canonical ABI 拷贝开销在将高吞吐网络数据包(如每秒 20 万包)传递给 WebAssembly Component Model 插件沙箱进行检测时,很多初学者在评测性能时会发现: 为什么通过 … · 2026/9/27 8:10:16

2026最新建博会广州网站选型:3大技术栈对比
2026最新建博会广州网站选型:3大技术栈对比

2026最新建博会广州网站选型:3大技术栈对比 别再用那些丑得让人想关页的模板站了。2026年的建博会广州网站,如果还顶着2019年的审美上线,客户看一眼就划走,流量全白烧。… · 2026/9/27 8:09:57

Sunshine 游戏串流实战指南:从安装到第一帧只要 10 分钟
Sunshine 游戏串流实战指南:从安装到第一帧只要 10 分钟

Sunshine 游戏串流实战指南:从安装到第一帧只要 10 分钟 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine 是自托管游戏串流服务器,装在自己的 PC 上… · 2026/9/27 8:09:57

AI Agent 接口标准化实战指南:消息格式与工具调用协议统一完整走通
AI Agent 接口标准化实战指南:消息格式与工具调用协议统一完整走通

AI Agent 接口标准化实战指南:消息格式与工具调用协议统一完整走通 【免费下载链接】awesome-ai-agents A list of AI autonomous agents 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-ai-agents 把多个 AI Agent 接在一起时,接口标… · 2026/9/27 8:09:57

Obsidian Copilot 测试实战指南:从 Jest 单元测试到 Obsidian CLI 端到端验证
Obsidian Copilot 测试实战指南:从 Jest 单元测试到 Obsidian CLI 端到端验证

AI 应用大模型AI Agent交互助手RAG 【免费下载链接】obsidian-copilot Run agents in Obsidian - OpenCode, Codex, Claude Code etc. 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-copilot 点击查看 免费下载 Obsidian Copilot 插件的完整测试体系实战指… · 2026/9/27 8:09:51

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现

简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01

汕头网站建设制作厂家避坑指南:5大注意事项救急
汕头网站建设制作厂家避坑指南:5大注意事项救急

汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01

多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习

简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码