图标维护
这份文档给人工维护者使用,目的是快速说明这个仓库里图标是如何组织和维护的。
图标由哪些文件组成
在这个仓库里,一个图标通常由两部分组成:
text
icons/<icon-name>.svg
icons/<icon-name>.json.svg负责图形本体.json负责分类、标签,以及中文默认展示信息和英文i18n.en
除此之外,还有一类文件与图标展示有关:
categories/*.json:定义分类名称、分类图标和中文分类标题docs/:文档站点,图标详情页、搜索和分类页都由构建脚本自动生成
图标规范
在真正修改图标之前,先看一遍公开规范页:
这页更偏设计与 SVG 代码规范。日常维护时,至少记住下面几点:
- 图标文件名使用 kebab-case
- 视觉风格应保持和现有线性图标一致
- 不要保留无意义的导出垃圾,例如多余分组、编辑器残留属性、无用元数据
- 图标应尽量保持简洁、对齐和可读,避免过度复杂的路径结构
- 如果只是补元数据,不要顺手改 SVG 形状
如果 SVG 来自外部设计工具,建议先清洗再继续维护:
sh
pnpm optimize添加一个图标
新增图标时,通常按这个顺序操作:
- 把 SVG 放进
icons/ - 新建同名的 JSON 元数据
- 检查分类是否已经存在
- 运行校验命令
示例:
text
icons/circle-arrow-up.svg
icons/circle-arrow-up.json如果 SVG 来自设计工具导出,建议先执行:
sh
pnpm optimize元数据至少要包含:
categoriestagsuse-cases
元数据必须同时包含中文主字段和英文 i18n.en:
name:中文图标名tags:中文搜索标签use-cases:中文使用场景,暂无时写空数组categories:稳定分类 slug,不是展示文案i18n.en.name:英文图标名i18n.en.tags:英文搜索标签i18n.en.use-cases:英文使用场景,暂无时写空数组
分类的中文与英文展示名统一维护在 categories/*.json,不要在图标 JSON 的 i18n.en 中重复写分类。
删除一个图标
删除图标时,不要只删 SVG。应当同时删除:
text
icons/<icon-name>.svg
icons/<icon-name>.json然后确认下面几类引用是否也要一起调整:
categories/*.json是否把它用作分类图标- 其他图标的
aliases或弃用迁移是否还引用它 - 文档示例是否还在使用这个图标
修改一个图标
修改图标通常分为三种:
修改 SVG 形状
只改:
text
icons/<icon-name>.svg修改 SVG 时,除了关注视觉效果,也要确认:
- 路径没有明显冗余
- 不存在无意义的编辑器残留属性
- 图标在 24px 视口下仍然清晰可辨
- 改动没有破坏现有风格一致性
修改分类、标签或中文文案
只改:
text
icons/<icon-name>.json这类改动会影响搜索、分类页和详情页的展示。
重命名图标
重命名时至少需要同步:
.svg文件名.json文件名- 文档示例中的引用
- 必要时在新 JSON 中补
aliases
新增或修改分类
分类定义在 categories/*.json 中,例如:
json
{
"$schema": "../category.schema.json",
"title": "导航与地点",
"icon": "compass",
"i18n": {
"en": {
"title": "Navigation & Places"
}
}
}这里需要注意两点:
icon必须指向一个已存在的图标- 图标元数据里的
categories值必须是“已存在分类”或“本次同时新增的分类”
默认应优先复用现有分类,不要随意新造分类名。只有在任务明确需要时,才新增新的 categories/<name>.json。
建议执行的校验命令
无论是新增、删除还是修改图标,至少建议执行:
sh
pnpm checkIcons
pnpm lint:json
pnpm --dir docs docs:build:no-og如果改动影响具体包的导出行为,再补对应包构建,例如:
sh
pnpm --filter @ycloud-web/icons-react build
pnpm --filter @ycloud-web/icons-vue build发布与版本
日常维护图标时,不需要手动改包版本。
当前仓库的版本策略是:
- 版本以 Git tag / release 为真实来源
- 文档首页和更新日志都从 tag 数据读取版本
- 真正发布成功后,workflow 会把各个
packages/*/package.json的版本自动回写到main