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'参数
| 参数名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
text | string | 是 | - | 要提取颜色的文本内容 |
filePath | string | 否 | '' | 文件路径,用于在结果中标识颜色来源 |
options.validOnly | boolean | 否 | true | 是否只提取格式有效且值在范围内的颜色 |
返回值
| 类型 | 说明 |
|---|---|
ColorReference[] | 颜色引用数组,每个元素包含颜色值、格式、位置和上下文信息 |
工作原理
- 将文本按行分割
- 对每一行使用正则表达式匹配所有颜色格式:
- 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 标准颜色名
- HEX:
- 对命名颜色进行上下文验证,避免误识别变量名
- 按位置排序,去除重叠匹配(RGBA 优先于 RGB)
- 如果
validOnly为 true,使用detectColorFormat验证颜色有效性 - 为每个颜色创建 ColorReference 对象,包含:
- 原始值
- 格式
- 行号(从 1 开始)
- 文件路径
- 上下文(该行的完整内容)
- 返回所有提取的颜色引用数组
不提取 CSS 变量(如 var(--primary-color)),CSS 变量提取应使用 extractCssVariables 函数。