Node.jsのANSIカラー - Console.logでカラーコードを使用
ANSIエスケープコードを使用してNode.jsのconsole.log出力にカラーを追加。生の\x1bシーケンス、chalkライブラリ、組み込みutil.inspect.colorsによるスタイル付きCLI出力をカバー。
Language Examples
詳細な説明
Node.jsでのカラーコンソール出力
Node.jsはANSIシーケンスのエスケープ文字として\x1bを使用します。このガイドではネイティブとライブラリベースの両方のアプローチをカバーします。
生のANSIシーケンス
// 基本色
console.log("\x1b[31m赤いテキスト\x1b[0m");
console.log("\x1b[1;32m太字緑\x1b[0m");
// 256色
console.log("\x1b[38;5;208mオレンジ\x1b[0m");
// トゥルーカラー
console.log("\x1b[38;2;255;165;0mトゥルーオレンジ\x1b[0m");
カラーユーティリティモジュール
const colors = {
reset: "\x1b[0m",
bold: "\x1b[1m",
dim: "\x1b[2m",
red: "\x1b[31m",
green: "\x1b[32m",
yellow: "\x1b[33m",
blue: "\x1b[34m",
magenta: "\x1b[35m",
cyan: "\x1b[36m",
white: "\x1b[37m",
bgRed: "\x1b[41m",
bgGreen: "\x1b[42m",
};
const colorize = (text, color) =>
`${colors[color]}${text}${colors.reset}`;
// 使い方
console.log(colorize("エラー!", "red"));
console.log(colorize("成功!", "green"));
カラーサポートの検出
const supportsColor = process.stdout.isTTY
&& !process.env.NO_COLOR
&& process.env.TERM !== "dumb";
function maybeColor(text, code) {
if (supportsColor) {
return `\x1b[${code}m${text}\x1b[0m`;
}
return text;
}
ストリームでの使用
// より詳細な制御のためにstdoutに直接書き込み
process.stdout.write("\x1b[33m処理中... \x1b[0m");
// ... 作業実行 ...
process.stdout.write("\x1b[32m完了\x1b[0m\n");
ESMとTypeScript
// color.ts
export const ANSI = {
red: (s: string) => `\x1b[31m${s}\x1b[0m`,
green: (s: string) => `\x1b[32m${s}\x1b[0m`,
bold: (s: string) => `\x1b[1m${s}\x1b[0m`,
rgb: (r: number, g: number, b: number, s: string) =>
`\x1b[38;2;${r};${g};${b}m${s}\x1b[0m`,
} as const;
console.log(ANSI.red("エラー"));
console.log(ANSI.rgb(255, 165, 0, "オレンジ"));
ユースケース
Node.js開発者はcommanderやyargsで構築されたCLIツール、カスタムビルドスクリプト、テストレポーター、ロギングユーティリティ、npmライフサイクルスクリプトでANSIカラーを使用します。生のエスケープコードによる軽量なアプローチは依存関係の追加を避けられ、chalkのようなライブラリは複雑なアプリケーション向けにリッチなAPIを提供します。ESLint、Prettier、Webpackなどの人気ツールはカラー出力を広範に使用しています。