终端能力检测器 terminal-capability-detector

这是一个用于检测命令行终端(CLI)环境能力的工具。它能自动识别终端的颜色支持级别、是否为交互式TTY、屏幕尺寸、Unicode字符支持以及是否在持续集成(CI)环境中运行。开发者可以利用这些信息,为不同的终端环境动态调整输出格式,例如在支持颜色的终端显示彩色进度条,在不支持Unicode的终端回退到ASCII字符,从而提升命令行工具的用户体验和跨平台兼容性。关键词:终端检测,CLI工具,跨平台兼容,颜色支持,TTY,Unicode,自适应输出,命令行界面。

DevOps 0 次安装 0 次浏览 更新于 2/23/2026

name: terminal-capability-detector description: 检测终端能力,包括颜色支持、TTY状态、尺寸和Unicode支持,用于自适应CLI输出。 allowed-tools: Read, Write, Edit, Bash, Glob, Grep

终端能力检测器

检测终端能力以实现自适应CLI输出。

能力

  • 检测颜色支持级别
  • 检查TTY状态
  • 获取终端尺寸
  • 检测Unicode支持
  • 检查是否为CI环境
  • 配置自适应输出

生成的代码模式

import process from 'process';
import tty from 'tty';

export interface TerminalCapabilities {
  isTTY: boolean;
  colorLevel: 0 | 1 | 2 | 3;
  supportsUnicode: boolean;
  columns: number;
  rows: number;
  isCI: boolean;
}

export function detectCapabilities(): TerminalCapabilities {
  const isTTY = tty.isatty(1);
  const isCI = Boolean(process.env.CI || process.env.CONTINUOUS_INTEGRATION);

  let colorLevel: 0 | 1 | 2 | 3 = 0;
  if (isTTY && !process.env.NO_COLOR) {
    if (process.env.COLORTERM === 'truecolor') colorLevel = 3;
    else if (process.env.TERM?.includes('256color')) colorLevel = 2;
    else if (process.env.TERM && process.env.TERM !== 'dumb') colorLevel = 1;
  }

  const supportsUnicode = process.platform !== 'win32' ||
    process.env.WT_SESSION ||
    process.env.TERM_PROGRAM === 'vscode';

  return {
    isTTY,
    colorLevel,
    supportsUnicode,
    columns: process.stdout.columns || 80,
    rows: process.stdout.rows || 24,
    isCI,
  };
}

目标应用场景

  • 跨平台CLI兼容性
  • CLI输出格式化
  • 进度状态指示器