Skip to content

colors

ANSI エスケープコードでテキストをラップし、ターミナルに色とスタイルを適用します。

typescript
import { colors } from 'es-toolkit/server';

console.log(colors.red('error'));
console.log(colors.bold(colors.cyan('hello')));

使い方

colors は ANSI スタイル関数をまとめたオブジェクトです。各関数は文字列を受け取り、対応する開きコードと閉じコードでラップした文字列を返します。

typescript
import { colors } from 'es-toolkit/server';

colors.red('error');
colors.bold('emphasized');
colors.underline(colors.cyan('link'));

実際に参照したスタイルだけがバンドルに含まれるため、ツリーシェイキングに適しています。

修飾子

reset, bold, dim, italic, underline, inverse, hidden, strikethrough

前景色

black, red, green, yellow, blue, magenta, cyan, white, gray

明るい前景色

blackBright, redBright, greenBright, yellowBright, blueBright, magentaBright, cyanBright, whiteBright

背景色

bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite

明るい背景色

bgBlackBright, bgRedBright, bgGreenBright, bgYellowBright, bgBlueBright, bgMagentaBright, bgCyanBright, bgWhiteBright

拡張カラー

拡張カラーのヘルパーはカリー化されています。先に色を渡してから、テキストを渡します。

  • ansi256(code) / bgAnsi256(code): 8 ビット (256 色) パレット。code0–255
  • rgb(r, g, b) / bgRgb(r, g, b): 24 ビットトゥルーカラー。
  • hex(color) / bgHex(color): 24 ビットトゥルーカラー。#RGB#RRGGBB、または # なしの同形式を受け付けます。
typescript
import { colors } from 'es-toolkit/server';

const orange = colors.rgb(255, 99, 71);
console.log(orange('hello'));

console.log(colors.hex('#f06')('hello'));
console.log(colors.bgAnsi256(21)('hello'));

合成

入れ子の呼び出しでは、内側のスタイルが閉じた後に外側のスタイルを再オープンするため、外側の色がそのまま続きます。

typescript
import { colors } from 'es-toolkit/server';

console.log(colors.red(`error: ${colors.underline('not found')}, please retry`));

ほとんどのターミナルは改行ごとに背景色をリセットするため、背景色のヘルパーは改行をまたぐたびに背景コードを再オープンします。

typescript
import { colors } from 'es-toolkit/server';

console.log(colors.bgYellow('line one\nline two'));

スタイル関数を返すヘルパー (ansi256bgAnsi256rgbbgRgbhexbgHex) は ColorFunction を返します。

typescript
import type { ColorFunction } from 'es-toolkit/server';

type ColorFunction = (text: string) => string;

補足

colors はターミナルがカラーに対応しているかを検出しません。どのような環境でも常に ANSI エスケープコードを出力します。NO_COLORFORCE_COLOR、TTY 判定、CI 環境などに応じて出力を切り替えたい場合は、呼び出し側で環境を確認してください。

MIT ライセンスの下で配布されています。