在开发 Node.js 命令行工具或脚本时,终端输出的文本若只有黑白两色,可读性和用户体验都会大打折扣。虽然原生 ANSI 转义码(如 \x1b[33m)可以实现着色,但记忆成本高、代码易混乱。Chalk 正是为此而生的轻量级库,它封装了复杂的转义序列,让开发者通过链式调用即可轻松定义字体颜色、背景色和下划线等样式。
一、安装
Chalk 最新版本(5.x 及以上)仅支持 ES Modules 方式导入,若项目中仍使用 CommonJS(require),需降级到 4.x。
- npm install chalk
- # 或作为开发依赖
- npm i chalk --save-dev
- # 使用 pnpm
- pnpm add -D chalk
- pnpm add --save-dev chalk
复制代码
二、引入方式
从 Chalk 5.0 开始,只能通过 import 引入:- import chalk from 'chalk';
复制代码 若使用 CommonJS 环境,可用 Chalk 4.x:- const chalk = require("chalk");
复制代码
三、核心 API 与用法
1. 基础颜色
直接调用 chalk.颜色名(),例如:- console.log(chalk.blue("蓝色字体"));
复制代码 支持的常见颜色有 red、green、blue、yellow 等。
2. 背景色
在颜色名前加 bg 前缀,如 chalk.bgRed。
3. 链式调用
可叠加多个样式:- console.log(chalk.blue.bold.underline("蓝色加粗下划线"));
复制代码
4. 多参数与嵌套
支持多个参数:- chalk.blue("Hello", "World!", "Foo");
复制代码 嵌套样式:- chalk.red("Hello", chalk.underline.bgBlue("world") + "!");
复制代码
5. 预定义错误与警告样式- const error = chalk.bold.red;
- const warning = chalk.hex('#FFA500');
- console.log(error('Error!'));
- console.log(warning('Warning!'));
复制代码
6. RGB 与 Hex 颜色
对于支持真彩色的终端,可使用 chalk.rgb(r, g, b) 或 chalk.hex('#xxxxxx'):- chalk.rgb(123, 45, 67).underline("深红色下划线");
- chalk.hex('#DEADED').bold("淡紫色加粗");
复制代码
7. 模板字符串中使用
非常适合动态输出状态信息:- console.log(`CPU: ${chalk.red('90%')}\nRAM: ${chalk.green('40%')}\nDISK: ${chalk.yellow('70%')}`);
复制代码
四、完整示例
新建一个 simple.js,内容如下:
- import chalk from 'chalk';
- const log = console.log;
- // 组合普通文本和样式文本
- log(chalk.blue('Hello') + ' World' + chalk.red('!'));
- // 链式调用
- log(chalk.blue.bgRed.bold('Hello world!'));
- // 多参数
- log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
- // 嵌套
- log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
- // 更复杂的嵌套
- log(chalk.green(
- 'I am a green line ' +
- chalk.blue.underline.bold('with a blue substring') +
- ' that becomes green again!'
- ));
- // 模板字符串
- log(`
- CPU: ${chalk.red('90%')}
- RAM: ${chalk.green('40%')}
- DISK: ${chalk.yellow('70%')}
- `);
- // RGB/Hex
- log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
- log(chalk.hex('#DEADED').bold('Bold gray!'));
复制代码
运行 node simple.js,终端会渲染出各种颜色和样式。
五、注意事项
- 从 Chalk 5.0 起,不再支持 require 方式,必须使用 import。若项目仍需 CommonJS,请安装 chalk@4。
- 某些终端(如 Git Bash)对 underline、bold 等样式支持有限,建议在实际部署前测试目标终端。
- Chalk 依赖终端 ANSI 颜色支持,现代终端(Windows Terminal、iTerm2、GNOME Terminal 等)多数可用。
六、适用场景
Chalk 非常适合 CLI 工具、构建脚本、日志输出、测试报告等场景,能显著提升终端信息的可读性和视觉层次。配合 ora(加载动画)、listr(任务列表)等库,可打造更友好的命令行交互体验。
更多官方资源可参考 NPM 主页和 GitHub 仓库。 |