chalk
有友好的链式 API,但也是我认为它不足的地方,尽管 sindresorhus 的杰出工作尽可能缩小了包体积, 但我不认为核心问题在于 为什么不换成更小的着色包?:
- 不能树摇,不能以 FP 范式例如 pipe/compose 来编码。
- 如果只需要着色红色失败和绿色成功信息,仍需要通过工厂函数创建完整的
chalk
。- 在轻量场景中远不如静态 ANSI 字符串的性价比。
所以我创建了这个包,它和 chalk
一样支持 ANSI 16 色,256 色 和 16 百万真彩色。
比起其他轻量包,除了基础的 ANSI 关键字,它还支持 十六进制数字表示法 (Hex) / 三原色光模式 (RGB) / CSS 关键字。
但这不意味着它牺牲了 体积 和 性能,相反它在 基准测试报告 中表现优异。
当然所有的着色包都已经足够快了,但如果你重视尺寸和性能, @kabeep/palette
是一个不错的选择。
查看 文档。
npm install @kabeep/palette --save
yarn add @kabeep/palette
pnpm add @kabeep/palette
CommonJS
const pipe = require('lodash.flow');
const { bgRgb, hex, keyword, yellowBright } = require('@kabeep/palette');
const padding = (text: string) => ` ${text} `;
const palette = pipe(keyword('gold'), padding, bgRgb(255, 0, 0));
console.log(palette('Error'), yellowBright('Warning'), hex('#ff0000')('Message'));
ESModule
import pipe from 'lodash.flow';
import { bgRgb, hex, keyword, yellowBright } from '@kabeep/palette';
const padding = (text: string) => ` ${text} `;
const palette = pipe(keyword('gold'), padding, bgRgb(255, 0, 0));
console.log(palette('Error'), yellowBright('Warning'), hex('#ff0000')('Message'));
在 W3C Wiki 查看完整列表。
欢迎通过 Pull Requests 或 Issues 来贡献你的想法和代码。
本项目采用 MIT 许可证。详情请见 LICENSE 文件。