Enquirer 2.0重磅发布:打造史上最优雅的Node.js命令行交互体验

Enquirer 2.0重磅发布:打造史上最优雅的Node.js命令行交互体验

【免费下载链接】enquirer Stylish, intuitive and user-friendly prompts, for Node.js. 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 many others! Please follow Enquirer's author: https://github.com/jonschlinkert 【免费下载链接】enquirer 项目地址: https://gitcode.com/gh_mirrors/en/enquirer

你还在为命令行工具单调乏味的交互界面发愁吗?还在忍受复杂难用的用户输入处理逻辑吗?Enquirer 2.0的到来彻底改变了这一切!作为被ESLint、Webpack、Yarn等数百家顶级开源项目采用的Node.js命令行交互库,Enquirer 2.0带来了颠覆性的重构,让命令行交互从此变得优雅而简单。读完本文,你将掌握如何利用Enquirer 2.0的全新特性,在5分钟内创建出媲美专业GUI应用的命令行交互体验。

为什么选择Enquirer 2.0?

Enquirer 2.0是一次从底层开始的彻底重写,不仅重构了提示的编写和处理方式,更重塑了创建和维护提示的理念。相较于其他命令行交互库,Enquirer 2.0具有三大核心优势:

  • 极简依赖:整个库仅依赖一个无依赖的包ansi-colors,极大提升了项目的可维护性和运行速度。
  • 丰富内置提示:将多个常用提示类型从独立包整合到核心库中,无需额外安装即可使用,同时保留自定义提示的扩展性。
  • 语义化样式系统:通过语义化命名的样式调色板,实现一致且高度可定制的视觉效果,让命令行界面既美观又易用。

官方文档:docs/overview.md

五大革命性新特性

1. 一站式内置提示解决方案

Enquirer 2.0将多个流行的提示类型整合到核心库中,包括但不限于:

多选提示示例

现在,创建一个多选提示只需几行代码:

const { MultiSelect } = require('enquirer');
const prompt = new MultiSelect({
  name: 'features',
  message: '选择你想使用的特性',
  choices: [
    { name: 'typescript', message: 'TypeScript支持' },
    { name: 'eslint', message: 'ESLint集成' },
    { name: 'prettier', message: 'Prettier格式化' }
  ]
});

prompt.run()
  .then(answers => console.log('选择结果:', answers))
  .catch(console.error);

2. 语义化样式系统:让命令行赏心悦目

Enquirer 2.0引入了语义化样式调色板,确保样式在所有提示中保持一致,同时支持高度定制。内置的语义化样式包括:

  • info (青色) - 信息提示
  • success (绿色) - 成功状态
  • warning (黄色) - 警告信息
  • danger (红色) - 错误状态
  • strong (粗体) - 强调文本
  • muted (暗淡) - 辅助文本

样式配置源码:lib/styles.js

主题定制示例

通过简单配置即可实现个性化主题:

const { Prompt } = require('enquirer');
Prompt.styles.success = 'green.bold';
Prompt.styles.warning = 'yellow.italic';

3. 异步优先的现代API设计

Enquirer 2.0全面采用Promise和async/await,使提示的组合、链接和堆叠变得前所未有的简单:

const { Input, Confirm } = require('enquirer');

async function run() {
  const name = await new Input({ message: '请输入你的名字' }).run();
  const confirm = await new Confirm({ message: `你确定你的名字是${name}吗?` }).run();
  
  if (confirm) {
    console.log(`欢迎你,${name}!`);
  }
}

run().catch(console.error);

这种异步优先的设计使复杂的交互式工作流变得直观易懂,极大降低了代码复杂度。

4. 精细入微的交互控制

Enquirer 2.0提供了丰富的选项来定制提示行为,满足各种复杂场景需求:

  • 历史记录:为Input和Text提示添加历史记录功能,支持上下键导航输入历史
  • 必填验证:通过required选项轻松实现必填项验证,支持自定义验证逻辑
  • 滚动控制:使用scroll选项启用或禁用长列表的滚动功能
  • 动态内容:支持基于用户输入动态更新提示消息、样式和选项

自动完成提示示例

自动完成提示示例:examples/autocomplete/prompt.js

5. 零负担迁移与学习曲线

尽管Enquirer 2.0进行了彻底重写,但仍然保持了良好的向后兼容性,同时简化了API:

  • options.default统一为options.initial,使API更加一致
  • 移除了预注册问题的方法,将控制权交还给开发者
  • 提供详尽的迁移指南示例代码库

快速上手:5分钟创建你的第一个交互界面

安装与基础使用

使用npm安装Enquirer:

npm install enquirer@2.0

或直接克隆仓库:

git clone https://gitcode.com/gh_mirrors/en/enquirer
cd enquirer
npm install

创建一个简单的确认提示:

const { Confirm } = require('enquirer');

const prompt = new Confirm({
  name: 'continue',
  message: '你准备好开始使用Enquirer了吗?',
  initial: true
});

prompt.run()
  .then(answer => console.log('你的选择:', answer ? '是' : '否'))
  .catch(console.error);

运行这段代码,你将看到一个美观的确认提示:

确认提示示例

创建多步骤表单

Enquirer 2.0的Form提示让创建多字段表单变得轻而易举:

const { Form } = require('enquirer');

const prompt = new Form({
  name: 'user',
  message: '请填写用户信息',
  choices: [
    { name: 'name', message: '姓名', initial: '张三' },
    { name: 'email', message: '邮箱', validate: val => /^[^@]+@[^@]+\.[^@]+$/.test(val) },
    { name: 'age', message: '年龄', type: 'number' }
  ]
});

prompt.run()
  .then(answers => console.log('用户信息:', answers))
  .catch(console.error);

这个例子展示了如何创建包含验证和初始值的表单,用户可以通过Tab键在字段间导航:

表单提示示例

完整示例代码:examples/form/prompt.js

高级应用:定制你的交互体验

语义化样式定制

Enquirer 2.0的语义化样式系统让定制提示外观变得简单直观。例如,修改多选提示的选中指示器:

const { MultiSelect } = require('enquirer');

const prompt = new MultiSelect({
  name: 'features',
  message: '选择你喜欢的特性',
  choices: ['速度快', '易用性', '美观', '功能丰富'],
  symbols: {
    indicator: '◉', // 选中指示器
    checkbox: '◯'   // 未选中指示器
  },
  styles: {
    selected: 'green.bold' // 选中项样式
  }
});

prompt.run().then(console.log);

创建自定义提示

Enquirer 2.0支持创建完全自定义的提示类型。只需继承基础Prompt类并实现必要的方法:

const { Prompt } = require('enquirer');

class CustomPrompt extends Prompt {
  constructor(options) {
    super(options);
    this.symbols = { ...this.symbols, custom: '→' };
  }

  render() {
    return `${this.symbols.custom} ${this.message} ${this.state.input || this.initial || ''}`;
  }
}

// 使用自定义提示
const prompt = new CustomPrompt({
  message: '请输入自定义内容',
  initial: 'Hello Enquirer!'
});

prompt.run().then(console.log);

自定义提示示例:examples/enquirer/custom-prompt-class.js

企业级应用案例

Enquirer已被众多知名项目采用,包括:

  • 开发工具:ESLint、Webpack、Babel
  • 包管理器:Yarn、PNPM、npm
  • 云服务:AWS Amplify、腾讯云Base
  • 测试框架:Cypress、Jest

这些项目选择Enquirer的主要原因是其可靠性、性能和优秀的用户体验。例如,Cypress使用Enquirer创建交互式测试配置向导,大幅简化了测试环境的设置过程。

结语:重新定义命令行交互体验

Enquirer 2.0通过彻底的重构和创新,将Node.js命令行交互提升到了新的高度。无论是简单的输入验证还是复杂的多步骤表单,Enquirer 2.0都能让开发过程变得轻松愉快,同时为终端用户提供流畅直观的交互体验。

立即开始探索Enquirer 2.0的无限可能:

  • 完整API文档:docs/
  • 示例代码库:examples/
  • 贡献指南:CONTRIBUTING.md

加入Enquirer社区,一起打造更优雅的命令行交互体验!

如果你觉得这篇文章对你有帮助,请点赞、收藏并关注作者,获取更多Enquirer高级使用技巧和最佳实践。

【免费下载链接】enquirer Stylish, intuitive and user-friendly prompts, for Node.js. 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 many others! Please follow Enquirer's author: https://github.com/jonschlinkert 【免费下载链接】enquirer 项目地址: https://gitcode.com/gh_mirrors/en/enquirer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值