Skip to content

extractColors

从文本中提取所有颜色值,支持 CSS、HTML、JavaScript 等多种文件格式的颜色提取。

函数签名

typescript
function extractColors(
  text: string,
  filePath?: string,
  options?: ExtractOptions
): ColorReference[]

interface ExtractOptions {
  validOnly?: boolean  // 是否只提取有效的颜色值,默认 true
}

interface ColorReference {
  originalValue: string  // 原始颜色值
  format: ColorFormat    // 颜色格式
  line: number          // 所在行号(从 1 开始)
  file: string          // 文件路径
  context: string       // 上下文代码(该行的内容)
}

type ColorFormat = 'hex' | 'rgb' | 'rgba' | 'hsl' | 'hsla' | 'named'

参数

参数名类型必填默认值说明
textstring-要提取颜色的文本内容
filePathstring''文件路径,用于在结果中标识颜色来源
options.validOnlybooleantrue是否只提取格式有效且值在范围内的颜色

返回值

类型说明
ColorReference[]颜色引用数组,每个元素包含颜色值、格式、位置和上下文信息

工作原理

  1. 将文本按行分割
  2. 对每一行使用正则表达式匹配所有颜色格式:
    • HEX: #RGB, #RRGGBB, #RGBA, #RRGGBBAA
    • RGB/RGBA: rgb(r, g, b), rgba(r, g, b, a)
    • HSL/HSLA: hsl(h, s%, l%), hsla(h, s%, l%, a)
    • 命名颜色: CSS 标准颜色名
  3. 对命名颜色进行上下文验证,避免误识别变量名
  4. 按位置排序,去除重叠匹配(RGBA 优先于 RGB)
  5. 如果 validOnly 为 true,使用 detectColorFormat 验证颜色有效性
  6. 为每个颜色创建 ColorReference 对象,包含:
    • 原始值
    • 格式
    • 行号(从 1 开始)
    • 文件路径
    • 上下文(该行的完整内容)
  7. 返回所有提取的颜色引用数组

不提取 CSS 变量(如 var(--primary-color)),CSS 变量提取应使用 extractCssVariables 函数。