picocolors:终端输出美化的极简利器,快如闪电的ANSIColor库!

前言

在开发命令行工具或Node.js应用时,终端输出的可读性和美观性往往决定了用户体验。而今天推荐的 picocolors 正是当前最轻量、性能最强的终端颜色格式化库!它仅有 0.5KB 大小,比同类库(如chalk)快2倍,且无需任何依赖,成为PostCSS、SVGO等流行工具的首选。

为什么选择picocolors?

1. 极致的轻量与性能

  • 体积仅0.5KB :比chalk小14倍,对项目体积几乎无影响。
  • 速度领先:通过优化的ANSI转义序列生成,执行效率碾压多数同类库。
  • 零依赖:无需额外安装模块,开箱即用。

2. 全功能支持

  • 文字颜色 :支持black、red、green等8种基础色,以及gray。
  • 背景色 :通过bgRed、bgGreen等实现高亮显示。
  • 格式修饰 :bold(加粗)、italic(斜体)、underline(下划线)等丰富样式。

3. 开发者友好

  • TypeScript支持:内置类型声明,完美兼容TS项目。
  • 跨平台兼容:支持Node.js 6+和浏览器环境。

快速上手指南

安装

通过npm或pnpm一键安装:

shell 复制代码
npm install picocolors
# 或
pnpm add picocolors

基础使用

javascript 复制代码
import pc from 'picocolors';

console.log(pc.green('成功!'));           // 绿色文字
console.log(pc.bgRed('错误警告'));        // 红色背景
console.log(pc.bold(pc.cyan('重要信息'))); // 加粗青色

高级组合

javascript 复制代码
// 嵌套样式
console.log(pc.red(`错误:${pc.bold('文件未找到')}`));

// 艺术字与多色混搭
console.log(pc.bold(pc.green(`欢迎使用 ${pc.blue('Vite')}!`)));

举一些例子

示例 1:嵌套样式组合

javascript 复制代码
import pc from 'picocolors'

// 嵌套样式(加粗 + 颜色 + 背景)
const title = pc.bold(pc.bgWhite(pc.black(' 系统状态 ')))
const message = pc.red(`发现 ${pc.underline('3 个')} 待处理问题!`)
console.log(`${title}\n${message}`)

// 多色混合文本
console.log(pc.green('欢迎使用') + pc.blue(' Node.js ') + pc.magenta('CLI 工具'))

应用场景:命令行工具的状态提示或交互界面美化

示例 2:动态生成彩色日志

javascript 复制代码
import pc from 'picocolors'

function logStatus(text, type = 'info') {
  const colorMap = {
    info: pc.blue,
    success: pc.green,
    warn: pc.yellow,
    error: pc.red,
  }
  const symbol = type === 'error' ? '✖' : '✔'
  console.log(colorMap[type](`[${symbol}] ${text}`))
}

logStatus('文件保存成功', 'success') // 绿色输出
logStatus('无法连接服务器', 'error') // 红色输出

示例 3:ASCII 艺术字

javascript 复制代码
import pc from 'picocolors'

const logo = pc.bold(
  pc.green(`
   ██████╗ ██╗   ██╗██████╗ 
  ██╔════╝ ██║   ██║██╔══██╗
  ██║  ███╗██║   ██║██████╔╝
  ██║   ██║██║   ██║██╔══██╗
  ╚██████╔╝╚██████╔╝██║  ██║
   ╚═════╝  ╚═════╝ ╚═╝  ╚═╝
  `)
)
console.log(logo)

示例 4:进度条模拟

javascript 复制代码
import pc from 'picocolors'

function simulateProgress() {
  let progress = 0
  const interval = setInterval(() => {
    progress += 10
    const bar = '■'.repeat(progress / 10).padEnd(10, '□')
    // process.stdout.write 可以在同一行输出内容
    process.stdout.write(pc.cyan(`\r[${bar}] ${progress}%`)) // 使用 \r 覆盖同一行
    if (progress >= 100) {
      clearInterval(interval)
      console.log() // 输出换行,避免光标停留在进度条末尾
    }
  }, 500)
}
simulateProgress()

总结

picocolors以极简设计 和强悍性能,成为终端美化的新标杆。无论是开发CLI工具、日志系统,还是优化现有项目,它都能以最小的代价带来显著的体验提升。快来尝试,让你的命令行输出"色"彩斑斓!

🔥 关注我的公众号「哈希茶馆」一起交流更多开发技巧

相关推荐
kyriewen1 小时前
Skills 榜前 10 我全装了:只有 3 个能直接用
前端·javascript·程序员
工控丫丫2 小时前
帆软看板中经常使用的公式函数及经常搭的组合
前端·javascript·数据库
Dream-Y.ocean4 小时前
鸿蒙PC平台星图遥感适配实战:基于 Electron 壳方案的纯 JavaScript 遥感图像处理引擎开发
javascript·electron·harmonyos
螺丝钉tina5 小时前
[Playwright ][16]Playwright + TypeScript API 自动化测试实战:API测试
前端·javascript·typescript
Highcharts.js7 小时前
React 中原生支持使用 JSX 组件配置自定义表格 Highcharts Grid
前端·javascript·react.js·前端框架·jsx·highcharts·自定义表格
Java后端的Ai之路7 小时前
【AIAgent开发】-Agent工具封装成CLI(纯干货!!!)
java·javascript·人工智能·agent·cli
薛定谔的猫-菜鸟程序员7 小时前
Electron开发超详细教程(从入门到放弃)
前端·javascript·electron
htzyl2069 小时前
前端阶梯——第四十三章、实战二:待办清单To-Do
前端·javascript·html
程序员大阳9 小时前
HTML+CSS+JS对话式实战(1)-开篇:认识我们要做的社团活动发布平台
javascript·css·html·实战·系统·平台·社团活动发布