这到底是成功还是失败?!
凌晨两点,程序员小张盯着屏幕上的命令行输出,眉头紧锁。团队刚上线的新工具在Windows电脑上显示“√ 成功”,而Mac同事的终端却是一串乱码“�”。第二天晨会,测试组发来灵魂拷问:“这到底是成功还是失败?!”…… 这场“符号显示分裂”的闹剧,直到小张发现了一个npm包——figures,才彻底终结。
为什么你的终端符号总在“打架”?
终端Terminal是程序员的战场,但不同系统对Unicode符号的支持差异,却让本应优雅的输出变得“支离破碎”:
- ✔️ 在支持Unicode的终端显示为“✔”,在老旧终端却变成“√”;
- ❌ 警告符号“⚠”可能直接显示成乱码“‼”;
- 甚至箭头“→”、进度条“█”等常用符号也会“叛变”……
figures的出现,就是为了解决这个“跨终端符号兼容”的世纪难题!
一行代码统一终端符号江湖
这个轻量级npm包,通过智能判断终端环境,自动切换Unicode符号和备选方案,让你的命令行输出“万端归一”。
1. 自动降级显示
import figures from 'figures';
console.log(figures.tick);
// 支持Unicode的终端:✔ | 老旧终端:√
2. 强制使用高级/备选符号
import { mainSymbols, fallbackSymbols } from 'figures';
console.log(mainSymbols.tick); // 始终输出 ✔
console.log(fallbackSymbols.tick);// 始终输出 √
3. 动态替换文本中的符号
import { replaceSymbols } from 'figures';
console.log(replaceSymbols('✔ 编译成功'));
// 根据终端能力自动替换为 √ 编译成功
实战场景:让CLI工具瞬间“高大上”
无论是构建工具、测试框架还是自定义脚本,figures能让你的输出专业度飙升:
场景1:打造跨平台友好的进度条
import figures from 'figures';
const progressBar = figures.squareDarkShade.repeat(10);
// ▓▓▓▓▓▓▓▓▓▓ (Windows/Mac/Linux全兼容)
场景2:统一日志符号体系
console.log(`${figures.info} 提示:配置文件已更新`);
console.log(`${figures.warning} 警告:内存使用率超过80%`);
console.log(`${figures.cross} 错误:无法连接数据库`);
进阶技巧:这些隐藏功能你知道吗?
自定义降级策略
通过replaceSymbols的useFallback选项强制指定符号版本
特殊符号库
支持音乐符♪、数学符号≈、几何图形◆等200+符号,文档直达👉 figures官方列表
搭配picocolors包使用
让符号变成彩色惊艳全场!
让终端符号告别“精神分裂”,从此跨平台输出稳如泰山!
🔥 关注我的公众号「哈希茶馆」一起交流更多开发技巧