当前版本:v1.3.0
一个轻量的 Figma 插件,提供三个高频能力:
- 添加描述 — 批量给选中组件 / 组件集的 Description 第一行插入自定义字段(Tag)。
- 导出为 PNG — 按 Description 中的
ID字段作为文件名,批量导出 1x PNG;多张自动打包为 ZIP 一次下载。 - 导出为 JSON — 输出
{ID: Link}映射 JSON 文件;ID 取自组件描述中的ID,外链取自 Component configuration 面板的 Link。
- ✅ 批量给选中的组件描述中添加自定义字段
- ✅ 新字段始终写入 Description 的 第一行,原有描述整体下移,不会被覆盖
- ✅ 仅作用于
Component与Component Set,避免误改普通图层 - ✅ 应用后插件窗口不会自动关闭,可连续对不同选区执行
- ✅ 批量导出 PNG:文件名取自组件描述中的
ID,多张自动打包为tag2json-export.zip - ✅ 导出 JSON 映射:一键导出
{ID: Link}结构到tag2json-dict.json - ✅ 按钮状态与选区联动:未选中时两个导出按钮与“立即应用”按钮自动禁用,选中后自动启用
- 为设计系统中的组件批量打标签(如所属业务线、负责人、版本、用途等)
- 在组件说明中写入结构化字段,供下游工具解析成 JSON
- 统一批量补齐缺失的标记字段,避免手动逐个修改
- 克隆或下载本仓库到本地。
- 打开 Figma 桌面端。
- 顶部菜单:
Plugins→Development→Import plugin from manifest... - 选择本项目根目录下的
manifest.json。 - 完成后即可在插件列表中看到 Tag2JSON。
插件面板包含三个功能模块:添加描述、导出为 PNG、导出为 JSON。运行插件后选中目标组件,对应模块按钮会从禁用变为可点;面板右下角显示当前选中数量与版本号。
- 在画布上选中一个或多个组件 / 组件集。
- 在「添加描述」输入框中填写要添加的字段,例如:
@owner=design-systemtype: buttonversion=1.2.0
- 点击 立即应用(或按回车)。
- 插件会提示
已更新 N 个组件的 Description 首行,可继续重新选择组件再次应用。
- 选中一个或多个组件 / 组件集。
- 点击「导出为 PNG」导出为 PNG 按钮。
- 解析每个组件 Description 中的
ID:xxx/ID:xxx(中英文冒号均可,不区分大小写)作为 PNG 文件名(1x)。 - 单个组件 → 直接下载对应
xxx.png;多个组件 → 打包为tag2json-export.zip一次下载。
- 选中一个或多个组件 / 组件集。
- 点击「导出为 JSON」导出为 JSON 按钮。
- 插件读取每个组件描述中的
ID与 Component configuration → Link 第一项,输出{ID: Link}映射,下载为tag2json-dict.json。
给定输入字段 @owner=ds,对一个组件 Description 的处理如下:
| 原 Description | 应用后 |
|---|---|
(空) |
@owner=ds |
这是一个按钮组件 |
@owner=ds这是一个按钮组件 |
@version=1.0主按钮 |
@owner=ds@version=1.0主按钮 |
规则总结:
- 原描述为空 → 新字段直接作为第一行
- 原描述非空 → 新字段写入第一行,原全部内容整体下移一行
- 在画布上选中一个或多个组件 / 组件集。
- 在插件面板下方点击 导出为 PNG。
- 插件会逐个解析每个组件的 Description,提取形如
ID:xxx或ID:xxx(中英文冒号均可,不区分大小写)的那一行,把冒号后面的内容作为 PNG 文件名。 - 导出结果:
- 仅一个组件 → 直接下载对应的
xxx.png(1x)。 - 多个组件 → 自动打包成一个 ZIP(
tag2json-export.zip),一次下载,内部每个文件仍是xxx.png。
- 仅一个组件 → 直接下载对应的
文件名规则:
- Description 中存在
ID:xxx→ 文件名为xxx.png - 未找到
ID字段 → 使用组件名作为文件名兜底 - 文件名中的非法字符(
\ / : * ? " < > |)会被替换为_ - 同一批中出现重复文件名时,自动追加
-2、-3等后缀
- 在画布上选中一个或多个组件 / 组件集。
- 点击插件面板的 导出为 JSON。
- 插件会读取每个组件 Description 中的
ID:xxx(中英文冒号均可),并读取 Component configuration → Link 第一项作为对应链接,以{ ID: Link }形式生成 JSON 并下载(默认文件名tag2json-dict.json)。
示例输出:
{
"btn-primary": "https://design.example.com/button",
"input-search": "https://design.example.com/input"
}行为说明:
- 未在 Description 中找到
ID时:使用组件名作为 key(兜底)。 - 未设置 Link 时:对应 value 为空字符串
""。 - 出现重复
ID时:自动追加-2、-3后缀,避免静默覆盖。
Tag2JSON/
├── manifest.json # 插件清单(名称、入口等)
├── code.js # 插件主逻辑(运行在 Figma 沙箱中)
├── ui.html # 插件 UI 界面
└── README.md # 当前文件
核心文件:
manifest.json— 插件配置code.js— 处理选区 & 写入 Descriptionui.html— 输入框与应用按钮
- 仅使用 Figma Plugin API
1.0.0,无构建依赖,直接修改后在 Figma 中重新运行即可。 - 仅处理节点类型为
COMPONENT/COMPONENT_SET,其他节点类型会被自动忽略。 - 如需修改匹配规则或新增字段格式化逻辑,修改
code.js中的addFieldToFirstLine函数即可。
Q: 为什么我选中了图层,插件却提示“请先选中至少一个组件或组件集”?
A: 插件仅处理 Component 和 Component Set,Frame / Group / Instance 不会被修改。
Q: 多次应用同一个字段会怎样?
A: 每次都会在第一行新增一条,不做去重。如果需要“已存在则跳过/覆盖”的行为,可以在 addFieldToFirstLine 中扩展。
Q: 修改代码后没生效?
A: 请在 Figma 中关闭插件窗口并重新运行,Figma 会重新加载 code.js。
MIT
| 版本 | 日期 | 变更 |
|---|---|---|
| v1.3.0 | 2026-05-08 | 新增:导出选中组件为 JSON({ID: Link} 映射,Link 取自 Component configuration 的 Link);按钮状态与选区联动,未选中时禁用;底部条整合提示语与版本号 |
| v1.2.0 | 2026-05-08 | 优化:导出改为 1x PNG;多张图片自动打包为 ZIP 一次下载;面板高度增大、不再出现滚动条 |
| v1.1.0 | 2026-05-08 | 新增:批量导出选中组件为 PNG,文件名取 Description 中 ID: 后面的字段 |
| v1.0.0 | 2026-05-07 | 首个正式版本:批量为选中组件的 Description 首行添加自定义字段 |