1.0.1 • Published 12 months ago

@kabeep/palette v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
12 months ago

🎨 最快的 Node.js 库, 支持 Hex、RGB 和 tree-shaking 设置终端文本的颜色和样式

NodeJS License NPM Codecov BundlePhobia CircleCI

English | 简体中文

📖 简介

chalk 有友好的链式 API, 但也是我认为它不足的地方, 我并不完全认同它 "固执己见"的防守型回答:

  • 庞大的包体积, chalk@4 的体积是 101KB, chalk@5 也有 43.2KB
  • 没有 tree-shaking
  • 不支持 pipe/compose 函数式编程。
  • 在轻量场景中远不如 静态ANSI字符串 的性价比。

因此我用两个小时时间开发了 @kabeep/palette 包, 它和 chalk 一样支持 ANSI 16 色, 256 色16m 真彩色

比起其他轻量包, 除了基础的 ANSI 关键字, 它还支持 十六进制数字表示法 (Hex) / 三原色光模式 (RGB) / CSS 关键字

但这不意味着它牺牲了 体积速度, 相反的它在 基准测试报告 中表现优异:

  • 它的 ESModule 文件仅有 9.48KB, CommonJS 也只有 12.7KB
  • 在大量基准测试的样本数量中, 它的速度比 chalk1.7x 以上。
  • 它和 colorette 一样要远快于 NPM 上主流的替代品, 但提供了更多 API 特性。
  • 完全支持 tree-shaking, 对于只需要 yellow / red 提示样式的 CLI 程序, 可以无负担的引入。
  • 享受函数式编程。

查看 文档

📦 安装

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'));

🌈 样式

修饰符

  • reset - 重置当前样式。
  • bold - 粗体文本。
  • dim - 降低文本不透明度。
  • italic - 将文本设置为斜体 (未得到广泛支持)。
  • underline - 文本下划线 (未得到广泛支持)。
  • overline - 文本上划线 (未得到广泛支持)。
  • inverse- 反转背景和前景色。
  • hidden - 打印文本但使其不可见。
  • strikethrough - 文本删除线 (未得到广泛支持)。

前景色

  • black - 黑色文本
  • red - 红色文本
  • green - 绿色文本
  • yellow - 黄色文本
  • blue - 蓝色文本
  • magenta - 品红色文本
  • cyan - 青色文本
  • white - 白色文本
  • gray - 灰色文本
  • redBright - 亮红色文本
  • greenBright - 亮绿色文本
  • yellowBright - 亮黄色文本
  • blueBright - 亮蓝色文本
  • magentaBright - 亮品红色文本
  • cyanBright - 亮青色文本
  • whiteBright - 亮白色文本

背景色

  • bgBlack - 黑色背景
  • bgRed - 红色背景
  • bgGreen - 绿色背景
  • bgYellow - 黄色背景
  • bgBlue - 蓝色背景
  • bgMagenta - 品红色背景
  • bgCyan - 青色背景
  • bgWhite - 白色背景
  • bgGray - 灰色背景
  • bgRedBright - 亮红色背景
  • bgGreenBright - 亮绿色背景
  • bgYellowBright - 亮黄色背景
  • bgBlueBright - 亮蓝色背景
  • bgMagentaBright - 亮品红色背景
  • bgCyanBright - 亮青色背景
  • bgWhiteBright - 亮白色背景

十六进制数字表示法 (Hex)

  • hex - (三位) #fff, ...
  • hex - (六位) #ffffff, ...
  • hex - (无#号) fff, ffffff, ...

三原色光模式 (RGB)

  • rgb - (255, 255, 255), ...

CSS 关键字

W3C Wiki 查看完整列表。

  • keyword - azure, gold, indigo, ...

💐 致谢

🤝 贡献

欢迎通过 Pull Requests 或 Issues 来贡献你的想法和代码。

📄 许可

本项目采用 MIT 许可证。详情请见 LICENSE 文件。