likes
comments
collection
share

探测终端色彩支持 — Node.js 环境的色彩智能检测

作者站长头像
站长
· 阅读数 29

在开发命令行工具时,利用色彩提升用户体验是很常见的需求。supports-color 包为你的 Node.js 应用检测终端是否支持色彩,及其支持等级。这篇指南将带你快速上手 supports-color,打造一个色彩丰富的终端应用。

🎨 安装 supports-color

$ npm install supports-color

首先,通过上述命令将 supports-color 添加到你的项目中。

🖥️ 如何使用 supports-color

接下来,让我们来看看如何在实际的项目中应用它:

// 引入 supports-color 模块
import supportsColor from 'supports-color';

// 检测标准输出是否支持色彩
if (supportsColor.stdout) {
	console.log('Terminal stdout supports color');
}

// 进一步检查是否支持 256 色
if (supportsColor.stdout.has256) {
	console.log('Terminal stdout supports 256 colors');
}

// 检验是否支持 1600 万色(真彩色)
if (supportsColor.stderr.has16m) {
	console.log('Terminal stderr supports 16 million colors (truecolor)');
}

这些代码片段可以直接应用在你的应用程序中,助你根据终端的支持度调整输出色彩。

🛠️ API 使用详解

supports-color 提供了一个主要对象,包含两个属性:stdoutstderr。这两个属性都是个对象,或者在不支持色彩时为 false

stdout/stderr 对象:

// stdout/stderr 对象属性示例
{
  level: 2, // 色彩支持的级别
  has256: true, // 支持 256 色
  // 其他属性...
}

属性及含义:

  • .level = 1.hasBasic = true:基础色彩支持(16色)
  • .level = 2.has256 = true:256 色彩支持
  • .level = 3.has16m = true:真彩色支持(1600 万色)

🗂️ 自定义实例

// 引入 createSupportsColor 来自 supports-color
import { createSupportsColor } from 'supports-color';

// 创建一个自定义的颜色支持实例
const stdoutSupportsColor = createSupportsColor(process.stdout);

// 使用该实例进行色彩支持检测
if (stdoutSupportsColor) {
	console.log('Terminal stdout supports color');
}
// `stdoutSupportsColor` 的结果等同于 `supportsColor.stdout`

🏳️‍🌈 强制色彩和 CLI 标志

supports-color 遵循 --color--no-color 命令行标志。

如果不能使用 --color,可以设置环境变量比如 FORCE_COLOR=1 来强制启用基本色彩支持。

使用 --color=256--color=16m 可以分别启用 256 色和真彩色模式。

📦 相关资源

这里还有一些与 supports-color 相关的资源:

希望本文能帮助你清晰地理解和使用 supports-color,让你的 Node.js 应用终端输出变得更加色彩缤纷!

仓库地址:github.com/chalk/suppo…

转载自:https://juejin.cn/post/7364409188075028531
评论
请登录