返回资源中心

progress

框架库
CLI工具
2 次浏览
0 个赞
进度条CLIJavaScript终端

资源描述

progress 是一个轻量、高性能的 JavaScript CLI 进度条框架,专为 Node.js 命令行应用设计。支持多阶段进度、动态速率估算、自定义样式与主题,兼容 Windows/macOS/Linux 终端。适用于构建 npm 包、CLI 工具、自动化脚本及构建系统(如打包、下载、迁移任务),显著提升用户等待体验与交互反馈质量。

详细内容

# progress — 高度可定制的 CLI 进度条框架 ## 简介与定位 `progress` 是一个面向现代 Node.js CLI 应用的轻量级进度可视化框架,由 Nathan P. Brown 开发并持续维护。它不依赖 DOM 或浏览器环境,专为终端(TTY)场景优化,提供声明式 API 与细粒度控制能力,帮助开发者在命令行中直观呈现长时间运行任务的执行状态,是 CLI 工具用户体验升级的关键基础设施。 ## 核心特性 - ✅ **多模式进度支持**:单阶段线性进度、多步骤分段进度(`step()`)、带子任务嵌套的树状进度(`group()`) - ✅ **实时动态渲染**:基于 `process.stdout` 的高效刷新机制,自动适配终端宽度,避免闪烁与换行错位 - ✅ **完全可定制外观**:支持自定义前缀/后缀、进度字符(如 `█`, `░`, `→`)、颜色(ANSI 256 色/RGB)、填充比例与空格策略 - ✅ **智能速率与 ETA 计算**:内置 `speed()` 和 `eta()` 方法,自动估算剩余时间与吞吐速率(单位:items/sec 或 bytes/sec) - ✅ **无障碍友好设计**:默认禁用动画/闪烁,支持 `--no-progress` 全局静默模式,兼容 CI/CD 环境与屏幕阅读器(通过 `aria-label` 类似语义注释) ## 适用场景 - 构建工具中的文件打包/压缩进度(如 esbuild、vite 插件) - 数据迁移或批量处理 CLI(如数据库同步、日志清洗) - 文件下载/上传工具(配合 `axios` 或 `node-fetch` 流式响应) - npm/yarn/pnpm 自研 CLI 的交互增强(如 `create-*` 脚手架) - CI 构建日志中关键阶段的可视化标记(需结合 `CI=false` 环境变量降级) ## 快速入门 ### 安装 ```bash npm install progress # 或 yarn add progress ``` ### 最小示例(单阶段进度) ```js import { Progress } from 'progress'; const bar = new Progress({ format: '[:bar] :current/:total (:percent%) :etas', width: 40, total: 100, }); for (let i = 0; i <= 100; i++) { bar.update(i); await new Promise(r => setTimeout(r, 50)); // 模拟异步工作 } ``` > 输出效果:`[██████████████████████████████████████] 100/100 (100%) 0s` ## 生态与社区 - 主页与文档:[https://progress.nathanpb.dev/](https://progress.nathanpb.dev/)(含完整 API 参考与主题配置指南) - 源码托管于 GitHub(公开仓库,MIT 协议),Issue 与 PR 响应活跃 - 已被多个知名 CLI 工具间接集成(如部分 `@oclif` 插件生态项目),社区提供 TypeScript 类型定义(`@types/progress`) - 不提供官方插件市场,但支持通过 `bar.set()` 和事件钩子(`on('update')`, `on('complete')`)灵活扩展行为