让你的Node.js CLI工具生动起来:ora、chalk和figlet的艺术

在开发命令行工具时,用户体验和实时反馈至关重要。它们不仅可以提升用户的互动体验,还能使命令行工具看起来更加专业和友好。本文将介绍如何使用Node.js及相关插件来增强命令行工具的用户体验和反馈,通过实现功能如下载进度指示、美化命令行输出和生成ASCII艺术字来丰富CLI工具的交互。

工具与技术栈

我们将利用以下几个Node.js库来实现我们的目标:

  • ora:用于显示加载指示器,提供实时的进度反馈。
  • chalk:用于在命令行中添加颜色和样式,美化输出。
  • figlet:生成ASCII艺术字,用于输出大型文字,增加视觉吸引力。

实施步骤

安装所需插件

首先,我们需要安装上述提到的npm包。

kotlin 复制代码
npm install ora@5 chalk@4 figlet

请确保使用合适的版本,以兼容CommonJS模块系统。

集成ora实现下载进度指示

我们使用ora库来显示下载进度。当开始下载项目模板时,显示一个旋转的加载指示器,下载完成后显示成功消息,如果下载失败则显示错误消息。

javascript 复制代码
const ora = require("ora");
const spinner = ora('Downloading source...').start();

// 伪代码示例
download(url, project, {clone: true}, (err) => {
  if (!err) {
    spinner.succeed('Download successful');
  } else {
    spinner.fail('Download failed');
  }
});

使用chalk美化命令行输出

接下来,我们用chalk库给命令行输出添加颜色,使其更加易读和吸引人。

javascript 复制代码
const chalk = require("chalk");

// 伪代码示例
console.log(chalk.blue('Download successful'));
console.error(chalk.red('Download failed'));

用figlet增加ASCII艺术字输出

最后,我们使用figlet库在特定事件(如下载完成)后输出ASCII艺术字,为用户提供独特的视觉体验。

javascript 复制代码
const figlet = require("figlet");

// 伪代码示例
console.log(figlet.textSync('Done!', { horizontalLayout: 'full' }));

综合应用

将以上技术结合,我们得到一个增强用户体验的下载功能实现。

javascript 复制代码
const download = require("download-git-repo");
const ora = require("ora");
const chalk = require("chalk");
const figlet = require('figlet');

const downloadFun = function (url, project) {
  const spinner = ora('Downloading source...').start();

  download(url, project, {clone: true}, (err) => {
    if (!err) {
      spinner.succeed(chalk.green('Download successful!'));
      console.log(chalk.yellow(figlet.textSync('Done!', { horizontalLayout: 'full' })));
      console.log(chalk.blue(`You can start by running:
cd ${project}
${chalk.green('npm install')}
${chalk.green('npm run dev')}`));
    } else {
      spinner.fail(chalk.red('Download failed'));
      console.error(chalk.red(err));
    }
  });
}

结语

通过使用ora、chalk和figlet等库,我们不仅增强了命令行工具的功能性,还大大提升了用户体验和工具的视觉吸引力。这些技巧能够帮助你构建更加专业和友好的Node.js命令行应用。

相关推荐
QQ_21696290961 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端
郑州光合科技余经理2 小时前
本地生活服务系统:模块边界与结算字段怎么拆
java·开发语言·前端·后端·系统架构·uni-app·php
IT_陈寒2 小时前
Vue的嵌套组件竟然吃掉了我的事件?
前端·人工智能·后端
大辉狼_音频架构3 小时前
进阶:从源码编译 SOF 固件与 topology
后端
大辉狼_音频架构3 小时前
上板:让 SOF 在 FRDM-i.MX8MP 上跑起来
后端
大辉狼_音频架构4 小时前
FRDM-IMX8MP UUU 烧录 eMMC 指南
后端
ruanCat4 小时前
Prettier 明明执行成功,Markdown 为什么还是没变?一次插件误诊复盘
前端·javascript·node.js
屋昂仼4 小时前
NestJS 从入门到企业级实战(二):依赖注入(DI)深度拆解
node.js
运行时异常5 小时前
【WMS 仓储系统集成 AI Agent 实战】第 3 讲:Spring Security 6 + JWT——addFilterBefore 一词之差,全站 401
java·后端
LinMINGJing0075 小时前
PageHeaderData:Page 的页面头
后端