查看: 121|回复: 1

Node.js终端文本彩色输出:Chalk库安装与API实战指南

[复制链接]
发表于 1 小时前 | 显示全部楼层 |阅读模式
在开发 Node.js 命令行工具或脚本时,终端输出的文本若只有黑白两色,可读性和用户体验都会大打折扣。虽然原生 ANSI 转义码(如 \x1b[33m)可以实现着色,但记忆成本高、代码易混乱。Chalk 正是为此而生的轻量级库,它封装了复杂的转义序列,让开发者通过链式调用即可轻松定义字体颜色、背景色和下划线等样式。

一、安装
Chalk 最新版本(5.x 及以上)仅支持 ES Modules 方式导入,若项目中仍使用 CommonJS(require),需降级到 4.x。
  1. npm install chalk
  2. # 或作为开发依赖
  3. npm i chalk --save-dev
  4. # 使用 pnpm
  5. pnpm add -D chalk
  6. pnpm add --save-dev chalk
复制代码

二、引入方式
从 Chalk 5.0 开始,只能通过 import 引入:
  1. import chalk from 'chalk';
复制代码
若使用 CommonJS 环境,可用 Chalk 4.x:
  1. const chalk = require("chalk");
复制代码

三、核心 API 与用法
1. 基础颜色
直接调用 chalk.颜色名(),例如:
  1. console.log(chalk.blue("蓝色字体"));
复制代码
支持的常见颜色有 red、green、blue、yellow 等。

2. 背景色
在颜色名前加 bg 前缀,如 chalk.bgRed。

3. 链式调用
可叠加多个样式:
  1. console.log(chalk.blue.bold.underline("蓝色加粗下划线"));
复制代码

4. 多参数与嵌套
支持多个参数:
  1. chalk.blue("Hello", "World!", "Foo");
复制代码
嵌套样式:
  1. chalk.red("Hello", chalk.underline.bgBlue("world") + "!");
复制代码

5. 预定义错误与警告样式
  1. const error = chalk.bold.red;
  2. const warning = chalk.hex('#FFA500');
  3. console.log(error('Error!'));
  4. console.log(warning('Warning!'));
复制代码

6. RGB 与 Hex 颜色
对于支持真彩色的终端,可使用 chalk.rgb(r, g, b) 或 chalk.hex('#xxxxxx'):
  1. chalk.rgb(123, 45, 67).underline("深红色下划线");
  2. chalk.hex('#DEADED').bold("淡紫色加粗");
复制代码

7. 模板字符串中使用
非常适合动态输出状态信息:
  1. console.log(`CPU: ${chalk.red('90%')}\nRAM: ${chalk.green('40%')}\nDISK: ${chalk.yellow('70%')}`);
复制代码

四、完整示例
新建一个 simple.js,内容如下:
  1. import chalk from 'chalk';
  2. const log = console.log;
  3. // 组合普通文本和样式文本
  4. log(chalk.blue('Hello') + ' World' + chalk.red('!'));
  5. // 链式调用
  6. log(chalk.blue.bgRed.bold('Hello world!'));
  7. // 多参数
  8. log(chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz'));
  9. // 嵌套
  10. log(chalk.red('Hello', chalk.underline.bgBlue('world') + '!'));
  11. // 更复杂的嵌套
  12. log(chalk.green(
  13.   'I am a green line ' +
  14.   chalk.blue.underline.bold('with a blue substring') +
  15.   ' that becomes green again!'
  16. ));
  17. // 模板字符串
  18. log(`
  19. CPU: ${chalk.red('90%')}
  20. RAM: ${chalk.green('40%')}
  21. DISK: ${chalk.yellow('70%')}
  22. `);
  23. // RGB/Hex
  24. log(chalk.rgb(123, 45, 67).underline('Underlined reddish color'));
  25. 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 仓库。
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层

Re: Node.js终端文本彩色输出:Chalk库安装与API实战指南

这篇教程写得很清晰,从安装、引入到各种API用法都讲得明明白白,特别是链式调用和模板字符串部分,对刚接触Chalk的新手非常友好。我之前一直用ANSI码硬写,确实容易乱套,看了你的示例感觉直接迁移到Chalk能省不少事。另外第5点关于终端兼容性的提醒很实用,Git Bash对下划线支持确实有时会出问题,提前测试是必要的。感谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-6-12 23:55 , Processed in 0.028128 second(s), 18 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部