figma-dev-tools
by qq1006492122
README.md
# 🎨 Figma Dev Tools v1.4.19
> Figma → 任意前端框架 设计到代码一键转换 MCP 服务器
**[English](https://gitee.com/shanxi-youcha/figma-dev-tools/blob/master/README.en-US.md)** | **中文**
**打通 Figma 设计与前端研发的完整工具链**,支持 🖥️
GUI 可视化配置向导、设计 Tokens 智能提取、高保真组件生成(React/Vue/Svelte/HTML 等)、资源自动下载、跨编辑器 MCP 集成。专为 AI
Agent 优化,解决 div
soup、上下文爆炸、hex 写死、资源路径处理、Flex 布局变形、无障碍缺失、响应式适配、**付费墙兜底**等核心痛点。
---
## ✨ v1.4.4 付费墙兜底 + 高保真还原 + 性能优化
### 核心兜底与还原
| 优化项 | 说明 | 版本 |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------- |
| 🧱 **付费墙浏览器兜底** | 新增 `BrowserFallbackService`:当 Figma REST API 因付费墙/权限失败时,自动启动 Playwright 无头浏览器加载设计稿页面并截图保底 | **v1.4.4** |
| 🤖 **视觉近似模式** | 新增 `VisualApproximationService`:当节点 JSON 无法获取时,将截图喂给 VLM 生成近似代码骨架,明确标注"近似模式 ~75%" + TODO 清单 | **v1.4.4** |
| 📏 **DPR/屏幕尺寸感知** | 截图按用户实际 `devicePixelRatio` 输出 1x/2x/3x,匹配不同操作系统渲染差异 | **v1.4.4** |
| 🎯 **还原度评分工具** | 新增 `figma_verify_fidelity` MCP 工具:Figma 截图 vs 生成代码截图像素 diff,输出量化相似度 | **v1.4.4** |
| 📐 **绝对定位还原** | 修复 `layoutMode=NONE` 节点丢失 `relativeTransform`,浮动元素旋转/偏移正确映射 | **v1.4.4** |
| 🎨 **渐变/多重阴影/inner shadow** | 修复线性/径向渐变填充、多重阴影、内阴影还原丢失,全部降级为纯色的问题 | **v1.4.4** |
| ✂️ **mask/clip-path 还原** | 修复圆角头像、异形裁切失真,映射为 `overflow:hidden` + `border-radius` 或 `clip-path` | **v1.4.4** |
| ➖ **strokeDash 虚线/点线** | 修复虚线、点线边框全部变成实线的问题 | **v1.4.4** |
| 🔤 **富文本多段样式** | 修复 `styleOverrideTable` 未解析导致整段文本用相同样式的问题 | **v1.4.4** |
| 🌍 **i18n 错误信息国际化** | `figma-client.ts` 中硬编码中文错误信息全部改为 i18n key 引用,按 GUI 选定语言(zh-CN/en-US)输出,默认中文 | **v1.4.4** |
### 性能优化(v1.4.4 新增)
| 优化项 | 说明 | 版本 |
| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | ---------- |
| 🚀 **浏览器实例池** | 新增 `BrowserPool`:维护可复用的 Playwright 浏览器实例,后续截图跳过 1-3 秒启动阶段,空闲 60 秒自动回收 | **v1.4.4** |
| 💾 **截图缓存** | 新增 `ScreenshotCache`:基于 `url+nodeId+dpr` 缓存截图结果,LRU 淘汰 + TTL 过期,重复请求秒级返回 | **v1.4.4** |
| ⏱️ **分级超时** | 导航/渲染/截图分别配置超时(默认 20s/10s/5s),精准定位超时阶段 | **v1.4.4** |
| 🧠 **混合智能等待策略** | `domcontentloaded` + 画布元素可见 + 网络空闲检测,解决 Figma SPA `networkidle` 始终无法达到的问题 | **v1.4.4** |
| 🔁 **指数退避重试** | 网络错误、超时错误自动重试(默认 2 次,初始延迟 500ms,指数退避),参数错误不重试 | **v1.4.4** |
| 🔥 **预热机制** | `warmup()` 在服务启动时预启动浏览器实例,消除首次调用延迟 | **v1.4.4** |
| 📊 **性能指标埋点** | `getPerformanceStats()` 暴露浏览器池和截图缓存的统计信息(命中率/实例数/使用次数) | **v1.4.4** |
| 🐛 **逻辑黑洞修复** | 修复 9 处逻辑黑洞:截图 selector 不一致、尺寸硬编码、devModeCss 注入风险、fidelityScore 未 clamp、依赖检查顺序等 | **v1.4.4** |
| 🧪 **测试覆盖** | 新增 35 个测试用例(BrowserPool + ScreenshotCache + 性能优化配置),总计 95 个测试全部通过 | **v1.4.4** |
### 性能对比(v1.4.4 优化前后)
| 场景 | 优化前 | 优化后 | 提升 |
| --------------------- | ---------- | -------------- | --------- |
| 后续截图(同会话) | 5-8 秒 | 1-2 秒 | **3-4x** |
| 重复请求(缓存命中) | 5-8 秒 | <100ms | **50x+** |
| 网络抖动恢复 | 直接失败 | 自动重试 | **可用性提升** |
### 性能优化配置(可选,向后兼容)
```typescript
// 通过 BrowserFallbackService 配置
const service = new BrowserFallbackService({
navigationTimeout: 20000, // 导航超时(毫秒)
renderTimeout: 10000, // 渲染等待超时(毫秒)
screenshotTimeout: 5000, // 截图操作超时(毫秒)
waitStrategy: 'hybrid', // 等待策略:hybrid/conservative/aggressive
maxRetries: 2, // 最大重试次数
retryBaseDelay: 500, // 重试初始延迟(毫秒)
enableScreenshotCache: true, // 启用截图缓存
screenshotCacheTtl: 3600000, // 缓存有效期(毫秒,默认 1 小时)
browserIdleTimeout: 60000, // 浏览器空闲超时(毫秒,默认 60 秒)
});
```
## 📜 版本历史汇总
| 版本 | 主题 | 核心内容 |
| ------- | ----------------------- | ---------------------------------------------------------------------------------------------------------- |
| v1.4.19 | 多框架 × 多样式 × 批量 × 智能化 | 1) Styled Components / Emotion / CSS Modules 深化 / Less / Sass / vanilla-extract / Panda CSS 七套样式渲染器补齐,React/Vue 双管线与 NEW_PIPELINE_FRAMEWORK_SUPPORT 能力闸(11 个样式方案全部可插拔);2) Vue 一级支持完整化(MCP `figma_generate_vue` + CLI `figma-dev vue`,Vue3 `<script setup>` / Vue2 Options API,vueVersion 可选);3) 组件库映射深化(Ant Design / Element Plus 内置映射 + 项目 `.figma-dev/components.json` 自定义规则,附 draft-07 `components.schema.json`);4) `figma_batch_generate` 批量生成与页面语义区块拆分(Header/Hero/Features/Footer 等 + barrel 索引,CLI `figma-dev batch`);5) 智能推断两批落地——T21 布局(Grid/吸顶/绝对定位参照物)、图标(Lucide/Iconify 分包建议)、暗色主题、动效(hover/pressed/spinner)四项可关开关(MCP `inference` 参数 / CLI `--no-smart-*`),T22 交互增强(表单提交+校验占位、Modal open/close、Carousel 轮播、Tabs、Accordion 手风琴)、列表→数据示例(TS interface + mock + `.map()`/`v-for`,仅建议不自动改写)、Frame 序号节点的 PascalCase 语义命名;全部智能产出仅以注释/报告建议形式留痕,`skipEnhancements` 总闸关闭。全量 39 文件 493 用例 + 冒烟 4 文件 73 用例全绿 |
| v1.4.18 | 多框架多样式地基 + P0 收尾 | 1) 样式方案可插拔架构(`style-renderers` 注册表/工厂,11 个方案描述符);2) UnoCSS React/Vue 双管线深化(preset-wind + attributify 归因模式,`--attributify`/MCP `unocssAttributify`);3) CSS Modules 完整支持(声明规范序提取、同名类共享、碰撞去重、`composes` 最大严格子集、React `styles['x']`/Vue `<style module>` 旁路产物);4) Figma Component Properties → TS Props 自动推导(React interface 继承 HTMLAttributes、Vue3 `defineProps<Props>()` + `withDefaults`,四类属性 TEXT/BOOLEAN/VARIANT/INSTANCE_SWAP 全覆盖);5) W3C DTCG Design Tokens 输出(`outputFormat:'dtcg'`/`sync --output-format dtcg`,含结构校验器);6) 自定义 CA(`FIGMA_CA_CERT_PATH`,API 与 OCR 下载同时生效);7) 构建器检测与资源路径自动修正(Vite/Webpack/Next.js/Remix 五形态);8) React/Vue 导入自动整理(Prettier 前语句级整理,幂等);9) 全部 CLI 命令 `--help` 中英双语示例(29 路径快照冒烟);10) 冒烟/全量/压测三层测试基建(makeLargeTree 2 万节点 fixture、MCP stdio harness)。全量 27 文件 375 用例(单测 323 + 冒烟 68)全绿、`npm audit` 0 漏洞 |
| v1.4.17 | MCP 并发可靠性 + OCR SSRF 加固 + 更新链路双校验 | 1) BrowserPool 增加 `poolKey` 快照与幂等 `release`,修复并发请求串池/重复释放;2) OCR 远程图片 SSRF 补齐 RFC2544 `198.19.0.0/16` 保留段拦截、DNS 多 A 记录任一为内网即拒绝、`redirect:'error'` 禁止跳转,并以可注入接缝补齐 DNS rebinding/redirect 单测(代码注明残留 TOCTOU 风险);3) `--update`/GUI 备用复制先解析并钉住最新稳定版本(弃用浮动 `@latest`),来源 tgz 与落盘 package.json 双重严格版本校验,校验失败不再谎报成功;4) CLI/GUI 升级临时目录统一 try/finally 必清理,失败提示全面 i18n(zh-CN/en-US 新增 5 键)并补 `update.hint`;5) GUI 仅监听 127.0.0.1 并加 Origin 白名单与 OPTIONS 预检;6) McpServer 握手版本改为运行时读取 package.json,杜绝版本号漂移;测试 134→152 全绿 |
| v1.4.16 | npm 版本占位发布 | 版本号占用发布,代码与 v1.4.15 一致,无功能变更;版本历史文档自本版起补齐 |
| v1.4.15 | `--update` EBUSY 备用复制加固 | 修复 v1.4.14 的 `figma-dev --update` 在 Windows Git Bash/MINGW64 下 EBUSY 后 robocopy 也失败:1) 统一用 `npm.cmd` / `cmd.exe` 避免 MSYS npm 返回 `/c/Users/...` 风格路径;2) robocopy `/MIR` 改 `/E`(只覆盖不删除,Trae 进程锁住的文件删不动会导致整体失败)+ 加 `/XF *.ps1`;3) 所有 `execFileSync` 补 `shell: true` 跨 shell 兼容;4) gui-server.ts EBUSY fallback 同步修复;5) 新增 `update.restartHint` i18n 键 |
| v1.4.14 | OCR 文本提取 + 版本号统一修复 | 新增第 20 个 MCP 工具 `figma_ocr_extract`:原生节点 JSON 优先提取(零依赖、100% 准确)、tesseract.js OCR 兜底(chi_sim+eng、PSM/OEM 可调、SSRF 防护远程图片);新增 `OcrService` + 单例管理 + 可选依赖动态导入 + i18n 错误消息;tesseract.js 加入 optionalDependencies;新增 22 个 OCR 单元测试;修复 src/index.ts McpServer.version 停留在 v1.4.4 的历史遗留 |
| v1.4.13 | 发布级回归加固 + getErrorInfo 防御归一化 | 新增 smoke 发布级回归用例×4(i18n 路径/codes 空指针/错误格式化);getErrorInfo 入口 null/undefined 归一化避免字段变 null 再次链式崩溃;build 0 错 + 99 case 全通过 |
| v1.4.12 | --update EBUSY 兜底强化 + Windows robocopy 修复 | 修复 robocopy 误报失败(退出码<8 视为成功)、Windows cp 不存在改用 copy /Y、升级从 npm pack 拉取新版 tgz 覆盖全局,解决编辑器占用导致 npm 全局更新 EBUSY rename 失败 |
| v1.4.11 | i18n 路径修复 + Token 交互增强 | 修复 Token 验证 i18n 路径错误(cli.errors.labels)、getErrorInfo codes 空指针、README QUICKSTART 链接 404;新增 FIGMA_ACCESS_TOKEN 环境变量 + password→input 降级兜底 |
| v1.4.10 | 版本号统一 + figd_ Token 认证修复 | 修复 figd_ 类型 Token 认证(X-Figma-Token 头),CLI/GUI 版本号统一从 package.json 读取,所有文档版本号同步更新 |
| v1.4.9 | figd_ Token 认证修复 | 修复 figd_ 类型 Token 必须使用 X-Figma-Token 请求头而非 Authorization 的兼容性问题,Token 验证全面通过 |
| v1.4.8 | --update EBUSY 兼容 + 文档 | --update 自动检测 EBUSY 并 robocopy 回退、CLI 文档补全(-v/--ver/--update)、修复重复图标、错误详情展示 |
| v1.4.7 | Token 验证优化 + i18n | Token 验证失败显示具体原因(HTTP 401/403/429)、GUI 错误详情展示、CLI 错误捕获增强、错误消息全面国际化 |
| v1.4.4 | 付费墙兜底 + 性能优化 | 浏览器兜底截图、视觉近似模式、还原度评分、性能优化(实例池/缓存/分级超时) |
| v1.4.3 | 稳定性与安全加固 | GUI 请求体防护、循环引用检测、递归深度保护、缓存一致性 |
| v1.4.1 | 代码质量优化 | 零 any 类型、oxlint 零警告、代码规范统一 |
| v1.4.0 | 重磅更新 | XSS 安全防护、智能层级修复、SVG 内联渲染、动画检测、本地加密缓存、评分算法优化、H5 适配、Token 安全存储 |
| v1.3.x | 基础能力建设 | GUI 可视化配置、i18n 国际化、无障碍增强、Flex 修复、设计系统对齐、响应式推断、设计规范检查 |
---
## ✨ 功能亮点
| 特性 | 说明 | 版本 |
| -------------------------------- | ----------------------------------------------------------------------------------------------------------------- | --------------- |
| 🖥️ **GUI 可视化配置向导** | 浏览器图形界面配置,欢迎页→语言选择→Token配置+实时验证→编辑器检测一键安装→框架偏好选择→完成页,小白零门槛 | **v1.3.0** |
| 🔗 **22 个 MCP 工具** | 完整覆盖 URL 解析 → Token 提取 → 组件生成(React/Vue/批量)→ 资源下载 → 付费墙兜底 → 还原度校验全流程 | v1.4.19 |
| 🧠 **框架无关结构化数据** | 输出 id/name/role/type/size/layout/styles/text/asset/children JSON,支持 Vue/Svelte/HTML/Angular/Solid 等任意框架 | v1.1.0 |
| ⚛️ **React + Tailwind 一级支持** | 语义标签选择 + Tailwind 映射 + cn() 合并 + TODO 标记,一键生成高保真 TSX | v1.3.2 |
| 🔧 **Flex 布局自动修复** | 智能修复图标变形、文本截断、溢出等 Flex 问题 | v1.3.2 |
| ♿ **无障碍增强** | 自动添加语义标签、alt、ARIA 属性 | v1.3.2 |
| 🎨 **设计系统对齐** | 自动匹配颜色/间距/字体/圆角/阴影变量 | v1.3.2 |
| 📱 **响应式推断** | 智能推断断点,提供响应式前缀建议 | v1.3.2 |
| ✅ **设计规范预检** | 生成代码前检查设计稿质量并给出修复建议 | v1.3.2 |
| 🧠 **智能层级精简** | 自动扁平化冗余 GROUP/FRAME,消除 ~60% 无意义嵌套 div | v1 |
| 📊 **渐进式上下文** | metadata 概览(~4KB)→ designContext 详情,避免上下文爆炸 | v1.2 |
| 🎯 **多级 Token 匹配** | codeSyntax.WEB → 精确 hex → CIE76 色差模糊 → @theme 扩展建议 | v1 |
| 🖼️ **资源自动管线** | 检测图片/SVG → 下载到 public/ → SVGO 优化 → 生成 publicCdnUrl() 引用 | v1.2 |
| 🧩 **SVG Sprite 生成** | 批量图标合并为 Sprite,支持 CSS color 控制颜色 | v1.3.2 |
| 🌍 **i18n 国际化** | 中英文双语支持,`figma-dev lang switch` 切换 | v1.3.2 |
| 🔐 **安全 Token 存储** | 系统密钥链安全存储 Token | v1.3.2 |
| 💻 **CLI 命令行** | 支持脚本和 CI/CD 集成,无需 MCP 也可使用,新增 gui/structured/lint/lang/token 命令 | v1 (gui v1.3.0) |
| 🔄 **8+ 编辑器支持** | Trae、VS Code、Cursor、Windsurf、Claude Desktop、Zed、Cline、Roo Code 一键安装(GUI 自动检测) | v1 (gui v1.3.0) |
| 🚀 **零配置启动** | 支持 `npx -y figma-dev-tools --figma-api-key=xxx` 直接运行,无需提前安装配置 | v1.2 |
| 🔍 **OCR 文本提取** | **⭐ v1.4.14 新:原生节点 JSON 优先提取(零依赖、100% 准确)+ tesseract.js 图片 OCR 兜底(chi_sim+eng 中英文、PSM/OEM 可调、SSRF 防护远程图片)** | **v1.4.14** |
| 🎴 **样式方案可插拔** | **⭐ v1.4.18 新:样式渲染器注册表/工厂架构;React/Vue 均支持 Tailwind、UnoCSS(含 attributify 归因模式)、CSS Modules(自动产出 `.module.css` 旁路文件)** | **v1.4.18** |
| 🧩 **Component Properties → TS Props** | **⭐ v1.4.18 新:自动读取 Figma 组件属性(文本/布尔/变体/实例交换),React 生成带 JSDoc 的 Props interface,Vue3 生成 `defineProps<Props>()` + `withDefaults`** | **v1.4.18** |
| 🪙 **W3C DTCG Tokens** | **⭐ v1.4.18 新:`figma_generate_styles`/`figma_sync_to_project` 支持标准 DTCG(`$type`/`$value`)JSON,color/dimension/shadow/typography 全类型映射并内置结构校验** | **v1.4.18** |
| 🏢 **企业网络适配** | **⭐ v1.4.18 新:`FIGMA_CA_CERT_PATH` 自定义 CA 根证书(私有根 CA/HTTPS 解密代理);构建器自动检测(Vite/Webpack/Next.js/Remix),资源按 `public/` 或 `src/assets/` 正确落位** | **v1.4.18** |
| 📐 **导入自动整理 + Help 示例** | **⭐ v1.4.18 新:React/Vue 产物在 Prettier 前自动整理 import(补齐缺失、移除未用、幂等);全部 CLI 命令 `--help` 提供中英双语示例,`-l` 当次切换** | **v1.4.18** |
| 🎻 **多样式 × React/Vue** | **⭐ v1.4.19 新:样式注册表共 11 个方案描述符;新管线可用 9 套——Tailwind / UnoCSS(含 attributify)/ CSS Modules / Styled Components / Emotion / Less / Sass / vanilla-extract / Panda CSS(React 9 套全支持,Vue 支持 5 套),另 inline-styles 走 React 旧管线、css-variables 计划 1.5.0** | **v1.4.19** |
| 💚 **Vue 一级支持** | **⭐ v1.4.19 新:MCP `figma_generate_vue` 与 CLI `figma-dev vue`,Vue3 `<script setup>` / Vue2 Options API(`vueVersion: 2`),模板+样式旁路与 React 同保真度** | **v1.4.19** |
| 🧩 **组件库映射深化** | **⭐ v1.4.19 新:内置 shadcn/ui、Ant Design、Element Plus 等映射;项目根 `.figma-dev/components.json` 可按节点名/组件 key 自定义导入源与 props 透传(draft-07 schema 校验)** | **v1.4.19** |
| 📦 **批量生成 + 语义区块拆分** | **⭐ v1.4.19 新:MCP `figma_batch_generate` / CLI `figma-dev batch`,按 Header/Hero/Features/Footer 等语义区域拆区块逐块生成并输出 barrel 索引(React/Vue 均可)** | **v1.4.19** |
| 🧠 **智能推断(仅建议不改写)** | **⭐ v1.4.19 新:布局 Grid/吸顶/绝对定位参照物、Lucide/Iconify 图标、暗色表面、hover/pressed/spinner 动效四项可关开关;T22 增补表单校验占位、Modal/轮播/Tabs/手风琴交互骨架、重复子项→TS interface+mock+`.map()`/`v-for` 数据驱动示例、Frame 序号→PascalCase 语义命名;全部以头注释与 structuredContent 报告呈现,`skipEnhancements` 一键关闭** | **v1.4.19** |
---
## 🚀 快速开始
> 📚 想要一份精简、与版本同步的速成指南?见 **[QUICKSTART.md](https://gitee.com/shanxi-youcha/figma-dev-tools/blob/master/QUICKSTART.md)**(中文)/ **[QUICKSTART.en-US.md](https://gitee.com/shanxi-youcha/figma-dev-tools/blob/master/QUICKSTART.en-US.md)**(英文)。以下为详细说明。
### 方式零:GUI 可视化配置(小白推荐 ⭐)
**无需记忆任何命令**,通过浏览器图形界面完成全部配置:
```bash
# 直接启动 GUI 配置面板
npx figma-dev-tools gui
# 或全局安装后
figma-dev gui
```
启动后会自动打开浏览器(默认端口
**54321**,被占用自动尝试 54322/54323),按照引导步骤操作:
1. **欢迎页面** - 了解 figma-dev-tools 功能
2. **语言选择** - 中文/English 双语切换
3. **Token 配置** - 输入 Figma Token,实时验证有效性
4. **编辑器检测** - 自动检测 8+ 已安装编辑器,勾选后一键安装 MCP 配置
5. **框架偏好** - 选择常用框架(React/Vue/HTML)
6. **完成页面** - 配置成功,提供使用教程链接
> 💡 也可以通过向导命令启动 GUI 模式:
>
> ```bash
> figma-dev wizard --gui
> figma-dev init --gui
> ```
---
### 方式一:零配置 npx 直接运行(最快)
无需安装,一行命令启动 MCP 服务器:
```bash
# 直接通过 npx 运行,传入 API Key
npx -y figma-dev-tools --figma-api-key=your-figma-token-here
```
在编辑器 MCP 配置中使用:
```json
{
"mcpServers": {
"figma-dev-tools": {
"command": "npx",
"args": ["-y", "figma-dev-tools", "--figma-api-key=figd_your_token_here"]
}
}
}
```
### 方式二:一键安装(推荐长期使用)
```bash
# npm
npx figma-dev-tools install
# pnpm
pnpm dlx figma-dev-tools install
# yarn
yarn dlx figma-dev-tools install
# bun
bunx figma-dev-tools install
```
安装脚本会自动:
- 检测已安装的 AI 编辑器(Trae/VS Code/Cursor/Windsurf/Claude
Desktop/Zed/Cline/Roo Code 等 8+)
- 自动检测包管理器(npm/pnpm/yarn/bun)
- 下载/编译工具
- 配置对应编辑器的 MCP settings(Zed 使用 mcp_servers 字段)
- 生成 `.env.example` 模板
> 💡 **更简单的方式**:运行 `figma-dev gui`
> 使用图形界面一键检测并安装编辑器配置。
### 方式三:项目依赖安装
```bash
# npm
npm install figma-dev-tools --save-dev
# pnpm
pnpm add figma-dev-tools -D
# yarn
yarn add figma-dev-tools --dev
# bun
bun add figma-dev-tools -d
```
### 方式四:从本地源码安装
```bash
# 克隆或复制 figma-dev-tools 目录到项目中
cp -r figma-dev-tools/ your-project/tools/
cd your-project/tools/figma-dev-tools
npm install # 或 pnpm install / yarn install / bun install
npm run build # 或 pnpm build / yarn build / bun run build
```
---
### 1. 获取 Figma Access Token
1. 登录 [Figma](https://www.figma.com/)
2. 点击右上角头像 → **Settings** → **Account**
3. 找到 **Personal access tokens** → **Generate new token**
4. 输入名称,勾选 **File content (Read only)** 权限
5. 复制生成的 Token(⚠️ 只显示一次)
> 💡 使用 GUI 配置时,在浏览器界面直接粘贴 Token 即可自动验证并保存。
### 2. 配置 Token
**方式 A:GUI 可视化配置(推荐 v1.3.0+)**
```bash
figma-dev gui
```
在浏览器界面中输入 Token,实时验证有效性后自动安全存储。
**方式 B:安全存储(推荐 v1.3.2+)**
```bash
# 交互式保存 Token 到系统密钥链
figma-dev token set
# 或直接通过参数
figma-dev token set -t figd_your_token_here
```
**方式 C:通过命令行参数**
```bash
npx figma-dev-tools --figma-api-key=your-figma-token-here
# 或短参数
npx figma-dev-tools -t your-figma-token-here
```
**方式 D:通过 .env 文件**
在 `figma-dev-tools/` 目录创建 `.env` 文件:
```env
FIGMA_ACCESS_TOKEN=your-figma-token-here
```
**方式 E:MCP 配置 env**
在编辑器 MCP 配置中添加:
```json
{
"mcpServers": {
"figma-dev-tools": {
"command": "node",
"args": ["<path>/dist/index.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "your-figma-token-here"
}
}
}
}
```
### 3. 第一个 Figma → 代码示例
**React + Tailwind(推荐,v1.4.0 增强版):**
在 AI 编辑器(如 Trae)中,直接对话:
```
帮我用 figma-dev-tools 还原这个 Figma 设计稿:
https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032
场景名:landing-page
组件名:HeroSection
```
AI 将自动执行以下增强流程(v1.3.2):
1. `figma_lint_design` - 设计规范预检(可选,提示问题)
2. `figma_parse_url` 解析链接
3. `figma_get_metadata` 获取页面结构概览
4. `figma_get_screenshot` 获取视觉基准
5. `figma_generate_jsx`
一键生成 TSX 代码(含 Flex 修复、a11y 增强、设计系统对齐、响应式推断)
6. `figma_download_assets` 下载图片资源(SVGO 自动优化)
**其他框架(Vue/Svelte/HTML 等):**
使用 `figma_get_structured_data` 工具获取框架无关的 JSON 结构:
```
帮我用 figma_get_structured_data 获取这个 Figma 节点的结构化数据,然后生成 Vue 组件:
https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032
```
### CLI 快速体验
```bash
# 🖥️ 启动 GUI 可视化配置面板(v1.3.0 新,小白推荐)
npx figma-dev-tools gui
# 查看文件信息
npx figma-dev info "https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032"
# 设计规范预检(v1.3.2 新)
npx figma-dev lint "https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032"
# 生成 React 组件(增强版)
npx figma-dev jsx "https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032" \
--name HeroSection --scene landing-page
# 获取框架无关结构化数据(v1.1.0 新)
npx figma-dev structured "https://www.figma.com/design/xxxxx/MyProject?node-id=23-11032" \
--format json --output ./hero-structured.json
# 同步 Design Tokens
npx figma-dev sync "https://www.figma.com/design/xxxxx/MyProject" \
--format oklch --output ./src/styles
# 语言设置(v1.3.2 新)
npx figma-dev lang switch # 交互式切换中英文
npx figma-dev lang set zh-CN
# Token 安全管理(v1.3.2 新)
npx figma-dev token set # 保存 Token 到密钥链
npx figma-dev token list # 列出已保存 Token
```
---
## 🔧 MCP 工具参考
共 **22 个 MCP 工具**,按使用流程排列:
| # | 工具名称 | 功能 | 关键参数 | 版本 |
| --- | --------------------------- | ------------------------------------------------------------------------------------- | ---------------------------------------- | ----------- |
| 1 | `figma_parse_url` | 解析 Figma URL,提取 fileKey/nodeId | `url` | v1 |
| 2 | `figma_validate_token` | 验证 Figma Access Token 有效性 | `accessToken` | v1 |
| 3 | `figma_get_file` | 获取文件基本信息(页面列表、组件数) | `fileKey` / `figmaUrl` | v1 |
| 4 | `figma_list_components` | 列出文件中 Components/ComponentSets | `fileKey` | v1.2 |
| 5 | `figma_get_metadata` | **高层结构概览**(~4KB,避免上下文爆炸) | `fileKey/nodeId/depth` | v1.2 |
| 6 | `figma_get_design_context` | **精简设计上下文**(层级扁平+语义标注+资源列表) | `fileKey/nodeId/maxDepth` | v1.2 |
| 7 | `figma_get_screenshot` | 获取节点高清截图 | `fileKey/nodeId/scale` | v1 |
| 8 | `figma_get_structured_data` | **⭐ 框架无关结构化数据**(id/name/role/type/size/layout/styles/text/asset/children) | `fileKey/nodeId/maxDepth` | v1.1.0 |
| 9 | `figma_lint_design` | **⭐ v1.3.2 新:代码还原质量预检** | `fileKey/nodeId/maxDepth` | **v1.3.2** |
| 10 | `figma_generate_jsx` | **⭐ 一键生成 React TSX 组件**(Flex/a11y/设计系统/响应式;新管线 9 套样式可插拔、TS Props 推导、智能推断建议) | `fileKey/nodeId/componentName/sceneName/styleFormat/unocssAttributify/typescript/inference` | v1.4.19 增强 |
| 11 | `figma_generate_component` | 基础组件生成(旧版,推荐 generate_jsx) | `fileKey/nodeId/styleFormat` | v1 |
| 12 | `figma_download_assets` | **下载资源到 public/<场景>/ + SVGO 优化 + publicCdnUrl;v1.4.18 按构建器落位(src/assets 等五形态)** | `fileKey/sceneName/assetNodeIds/bundler` | v1.4.18 增强 |
| 13 | `figma_create_icon_sprite` | **⭐ v1.3.2 新:生成 SVG Sprite 雪碧图** | `svgDir/outputPath/typesPath` | **v1.3.2** |
| 14 | `figma_extract_tokens` | 提取设计 Tokens(Variables+Styles) | `fileKey/colorFormat` | v1 |
| 15 | `figma_generate_styles` | 生成 CSS Variables / Tailwind v4 @theme / 原始 JSON / **W3C DTCG(v1.4.18)** | `tokens/outputFormat`(css-variables/tailwind-v4/json/dtcg) | **v1.4.18** 增强 |
| 16 | `figma_sync_to_project` | 写入 tokens 到项目文件(自动备份;v1.4.18 新增 dtcg/all 直写 `.tokens.json`) | `tokens/outputDir/format`(css/tailwind/json/dtcg/all) | **v1.4.18** 增强 |
| 17 | `figma_dev_fallback_status` | **⭐ v1.4.4 新:查询付费墙兜底系统状态**(Playwright 可用性、配置、兜底优先级) | 无 | **v1.4.4** |
| 18 | `figma_dev_fallback_capture`| **⭐ v1.4.4 新:触发浏览器兜底截图**(付费墙时截图 + Dev Mode CSS + 视觉近似模式) | `figmaUrl/devicePixelRatio/framework` | **v1.4.4** |
| 19 | `figma_verify_fidelity` | **⭐ v1.4.4 新:还原度校验**(像素 diff + 差异热力图 + 量化评分 0-100%) | `figmaUrl/codeContent/threshold` | **v1.4.4** |
| 20 | `figma_ocr_extract` | **⭐ v1.4.14 新:OCR 文本提取**(原生节点 JSON 优先 + tesseract.js 图片 OCR 兜底) | `figmaUrl/imagePath/language/psm/oem` | **v1.4.14** |
| 21 | `figma_generate_vue` | **⭐ v1.4.19 新:一键生成 Vue SFC**(Vue3 `<script setup>` / Vue2 Options API;5 套 Vue 样式、TS Props、样式旁路、智能推断与 React 同源) | `fileKey/nodeId/componentName/vueVersion(2\|3)/styleFormat/inference` | **v1.4.19** |
| 22 | `figma_batch_generate` | **⭐ v1.4.19 新:批量生成**(页面按 Header/Hero/Features/Footer 等语义区块拆分,逐块生成 React/Vue 文件 + barrel 索引 + 依赖图) | `fileKey/nodeId/nodeIds/framework/styleFormat/vueVersion/componentNamePrefix/inference` | **v1.4.19** |
### 工具详细参数
#### `figma_ocr_extract`(v1.4.14 新,OCR 文本提取)
```typescript
{
figmaUrl?: string; // Figma 设计稿 URL(提供时优先原生提取)
imagePath?: string; // 图片来源:本地路径 / http(s) URL / base64 data URI
language?: string; // OCR 语言(tesseract 格式,'+' 组合),默认 'chi_sim+eng'
psm?: number; // 页面分割模式 1-13,默认 3 = 自动
oem?: number; // OCR 引擎模式 0-3,默认 1 = LSTM
autoScreenshot?: boolean; // 原生无文本时自动截图兜底,默认 true
screenshotScale?: number; // 自动截图倍率 1-4,默认 2
accessToken?: string; // 可选,优先使用环境变量
}
```
**混合策略:**
1. **原生优先**(有 figmaUrl 时):遍历 Figma TEXT 节点读取 `characters` 字段,零依赖、100% 准确
2. **截图兜底**:原生提取无文本时,自动调用 Figma 截图接口下载 PNG 做 OCR
3. **图片 OCR**(有 imagePath 时):tesseract.js 对本地文件/远程 URL/base64 做光学字符识别
**依赖说明:** tesseract.js 为可选依赖(仅走图片 OCR 时需要),未安装时给出安装提示。远程图片 URL 有 SSRF 防护(拒绝私网地址)。
#### `figma_generate_jsx`(v1.4.19 增强版,最常用)
```typescript
{
figmaUrl?: string; // Figma 链接(可替代 fileKey+nodeId)
fileKey?: string; // Figma 文件 Key
nodeId?: string; // 目标节点 ID
componentName?: string; // 组件名(如 HeroSection)
sceneName?: string; // 场景名(用于资源路径,如 landing-page)
maxDepth?: number; // 节点树最大遍历深度,默认 15(1-30)
// v1.4.19:新管线支持 9 套方案(注册表共 11,另 inline-styles 仅旧管线、css-variables 计划 1.5.0)
styleFormat?: 'tailwind' | 'unocss' | 'css-modules' | 'styled'
| 'emotion' | 'less' | 'sass'
| 'vanilla-extract' | 'panda';
unocssAttributify?: boolean; // UnoCSS 归因模式(text="sm center" 形态),仅 styleFormat=unocss 生效
typescript?: boolean; // 是否生成 TypeScript,默认 true
// v1.4.19 T21:智能推断四项分项开关(缺省全开;仅建议,不改写显式样式)
inference?: {
grid?: boolean; // Grid/吸顶/固定/绝对定位参照物建议
icons?: boolean; // Lucide/Iconify 图标建议
darkMode?: boolean; // 暗色表面 dark: 建议
motion?: boolean; // hover/pressed/spinner/transition 动效建议
};
skipEnhancements?: boolean; // 跳过全部增强(Flex/a11y/设计系统/响应式/智能推断 T21+T22)
skipLintCheck?: boolean; // 是否跳过设计规范检查提示
accessToken?: string; // 可选,优先用环境变量
}
```
**v1.4.19 新增输出行为:**
- 🎻 **新样式渲染器**:styled(Styled Components)/ emotion / less / sass / vanilla-extract / panda 六套 v1.4.19 接入新管线(连同 css-modules 深化即批次「七样式」工作);不支持的框架×样式组合在 zod/注册表双重拦截并返回可读错误(矩阵见下)
- 💚 **Vue 请改用专用工具 `figma_generate_vue`**(见下),输出 Vue3 `<script setup>` 或 Vue2 Options API SFC
- 📦 **整页批量请用 `figma_batch_generate`**(见下),自动按语义区块拆分
- 🧠 **智能推断建议(仅注释,不改写产物代码)**:TSX 头注释按类别列出 Grid/图标/暗色/动效(T21)与表单校验/轮播/手风琴/Tabs/Modal 交互骨架、列表→TS interface+mock+`.map()` 数据示例、Frame 序号节点 PascalCase 命名(T22);完整结构化结果在 `structuredContent.reports` 中
**v1.4.18 输出行为:**
- 🎴 **多样式管线**:`styleFormat:'css-modules'` 时在组件旁路产出 `X.module.css`(React 用 `styles['class']`);`unocss` + `unocssAttributify:true` 输出归因式属性
- 🧩 **TS Props 自动推导**:读取组件 Component Properties(TEXT/BOOLEAN/VARIANT/INSTANCE_SWAP),声明带 JSDoc 的 `XxxProps`(含 `@default`/可交换 key 说明);无属性组件不输出空 interface
- 🧹 **导入自动整理**:Prettier 格式化前自动补齐实际使用的 import、移除未使用 import(含语句级 `import type`),结果幂等
- 🖼️ 资源引用路径按目标构建器修正(Vite/Webpack/Next.js/Remix 自动检测,可通过 CLI `--bundler` 覆盖)
**历史增强输出(v1.4.0+):**
- 完整 React + TypeScript + Tailwind TSX 代码(Prettier 格式化)
- 🔧 **Flex 修复报告**:列出自动修复的布局问题(图标变形、文本截断等)
- ♿ **无障碍增强报告**:语义标签、alt 文本、ARIA 属性添加情况
- 🎨 **设计系统建议**:颜色/间距/圆角/阴影变量匹配建议
- 📱 **响应式建议**:断点推断、sm/md/lg 前缀建议
- ⚠️ 需要 `@theme` 扩展的 token 列表
- 🖼️ 需要下载的资源列表(nodeId、名称、类型)
- 🧩 可复用组件提示
- 节点精简统计
- ✅ 设计规范评分提示(低于 80 分建议先修复)
#### `figma_generate_vue`(v1.4.19 新,Vue SFC 一级入口)
```typescript
{
figmaUrl?: string; // Figma 链接(可替代 fileKey+nodeId)
fileKey?: string;
nodeId?: string;
componentName?: string; // 默认从节点名推断(PascalCase)
sceneName?: string; // 资源子路径
projectRoot?: string; // bundler=auto 时用于检测构建器
bundler?: 'auto' | 'vite' | 'webpack' | 'nextjs' | 'remix';
maxDepth?: number; // 默认 15(1-30)
vueVersion?: 2 | 3; // 默认 3:<script setup lang="ts">;2:Options API(defineComponent + PropType/validator)
// Vue 支持 5 套:tailwind / unocss / css-modules / less / sass
// styled/emotion/vanilla-extract/panda 为 React 专属,触网前即明确报错
styleFormat?: 'tailwind' | 'unocss' | 'css-modules' | 'less' | 'sass';
unocssAttributify?: boolean; // 默认 false,仅 unocss 生效
typescript?: boolean; // 默认 true
inference?: { grid?: boolean; icons?: boolean; darkMode?: boolean; motion?: boolean };
skipEnhancements?: boolean; // 默认 false(总闸:关闭后 T21/T22 建议均不输出)
skipLintCheck?: boolean;
accessToken?: string;
}
```
**输出:** 单文件 `.vue` SFC(`<template>` + `<script setup lang="ts">` / Options API + `<style>`),React 同源的增强报告与 T21/T22 智能建议(Vue 侧交互骨架以注释建议呈现,列表数据示例给 `v-for`);`css-modules/less/sass` 时旁路产出样式文件(`<style module src="./X.module.css">` 或 `<style lang="less/scss">`)。
#### `figma_batch_generate`(v1.4.19 新,整页批量生成)
```typescript
{
figmaUrl?: string;
fileKey?: string;
nodeId: string; // 页面/大 Frame 根节点(自动拆分对象,必填)
nodeIds?: string[]; // 显式区块 ID;省略=自动拆分整页(顺序按树位置归一化,结果确定)
componentNamePrefix?: string;// 区块组件名统一 ASCII 前缀,如 'Landing' → LandingHeader / LandingHero
sceneName?: string;
projectRoot?: string;
bundler?: 'auto' | 'vite' | 'webpack' | 'nextjs' | 'remix';
maxDepth?: number; // 默认 15
framework?: 'react' | 'vue'; // 默认 react
vueVersion?: 2 | 3; // 默认 3(仅 framework=vue)
styleFormat?: StyleFormat; // 同单组件工具;不支持的框架×样式组合触网前报错
unocssAttributify?: boolean;
inference?: { grid?: boolean; icons?: boolean; darkMode?: boolean; motion?: boolean };
skipEnhancements?: boolean;
accessToken?: string;
}
```
**输出:** 区块清单(header / hero / features / section / sticky / footer 等语义类型)、每区块一个完整组件文件(与 `figma_generate_jsx`/`figma_generate_vue` 同一增强管线)、`index.ts` barrel、文件依赖图(barrel→主文件→样式旁路)、聚合待下载资源。MCP 调用不写磁盘;CLI `figma-dev batch` 直接落盘为多文件目录。
**自定义组件库映射(v1.4.19 T19):** 在项目根放置 `.figma-dev/components.json`(JSON Schema draft-07,随包提供 `components.schema.json`),即可按 Figma 节点名或组件 key 指定生成时导入的库组件(如 shadcn/ui、Ant Design、Element Plus)与 props 透传规则;未配置时使用内置默认映射(自动检测到根 `components.json` 时按 shadcn/ui 处理,两套配置互不冲突)。自定义规则优先于内置映射、首个关键词命中即生效;文件非法时输出 i18n 提示并忽略,生成不中断。模板:
```json
{
"$schema": "https://figma-dev-tools.com/components.schema.json",
"version": 1,
"components": [
{
"name": "ElButton",
"library": "element-plus",
"importPath": "element-plus",
"keywords": ["button", "按钮"],
"suggestedProps": { "type": "primary" },
"usageExample": "<el-button type=\"primary\">立即开始</el-button>"
},
{
"name": "PrimaryButton",
"importPath": "@/components/primary-button",
"keywords": ["cta", "primary action"]
}
]
}
```
#### `figma_generate_styles` / `figma_sync_to_project`(v1.4.18 新增 W3C DTCG)
- `figma_generate_styles` 的 `outputFormat`:`css-variables` | `tailwind-v4` | `json` | **`dtcg`**
- `figma_sync_to_project` 的 `format`:`css` | `tailwind` | `json` | **`dtcg`** | `all`(`all` 在原有产物外额外写入 `design-tokens.tokens.json`)
- DTCG 映射规则:颜色→`$type:'color'`;间距/圆角→`dimension`(px/rem);阴影→`shadow`(含 inset 判定);字体样式→`typography` 嵌套组(font-family/font-size/font-weight/line-height/letter-spacing);空分类整体省略;写入前执行结构校验,任何非法节点都会在错误信息中给出完整路径(如 `color.primary-500`)
### 🧭 框架 × 样式支持矩阵(v1.4.19)
注册表(单一数据源 `src/services/style-renderers/registry.ts`)共登记 **11 个方案描述符**;v1.4.19 增强新管线可用 9 套,矩阵如下:
| 样式方案(styleFormat) | React | Vue 3 | Vue 2 | 说明 |
| --- | --- | --- | --- | --- |
| Tailwind(`tailwind`,默认) | ✅ | ✅ | ✅ | tailwind-v4 映射;React 经 `cn()`(clsx + tailwind-merge)合流 |
| UnoCSS preset-wind(`unocss`) | ✅ | ✅ | ✅ | 工具类与 Tailwind 同构;`unocssAttributify` 可开归因模式 |
| CSS Modules(`css-modules`) | ✅ | ✅ | ✅ | 旁路 `*.module.css`;语义类名、共享声明合并、碰撞去重、`composes` 复用 |
| Styled Components(`styled`) | ✅ | — | — | v1.4.19 新;模板字符串 styled 组件 + ThemeProvider 占位 |
| Emotion(`emotion`) | ✅ | — | — | v1.4.19 新;`css` prop / `css()` 对象样式常量 |
| Less(`less`) | ✅ | ✅ | ✅ | v1.4.19 新;变量、嵌套与 mixin;旁路 `.less` |
| Sass/SCSS(`sass`) | ✅ | ✅ | ✅ | v1.4.19 新;变量、嵌套与 mixin;旁路 `.scss` |
| vanilla-extract(`vanilla-extract`) | ✅ | — | — | v1.4.19 新;类型安全零运行时 `.css.ts` |
| Panda CSS(`panda`) | ✅ | — | — | v1.4.19 新;`css()` 对象样式 + cva/recipe 建议 |
| inline-styles(`inline-styles`) | ✅¹ | — | — | 仅旧管线 `figma_generate_component` 保留契约 |
| CSS 变量组件样式(`css-variables`) | 🔜 | 🔜 | 🔜 | 计划 v1.5.0;tokens 提取的 `:root` 变量输出现已可用 |
> ¹ React 旧管线(`figma_generate_component`)支持 tailwind / css-modules / inline-styles;新组件请使用 `figma_generate_jsx`。
> 不支持的组合(如 Vue + styled/emotion/vanilla-extract/panda、任何管线 + css-variables)会在触网前经 zod/注册表双重校验返回可读错误,不产生静默降级。微信/uni-app/Taro 小程序计划于 v1.4.20 接入。
#### `figma_lint_design`(v1.3.2 新,代码还原质量预检)
```typescript
{
figmaUrl?: string; // Figma 链接
fileKey?: string; // Figma 文件 Key
nodeId?: string; // 目标节点 ID(可选,默认检查整个文件)
maxDepth?: number; // 最大检查深度,默认 15(1-30)
accessToken?: string; // 可选
}
```
**检查项:**
- Auto Layout 使用规范
- 图层命名规范性
- 间距/尺寸/圆角是否使用 4px/8px 网格
- 组件复用情况
- 无障碍最小点击尺寸(48×48px)
- 嵌套层级深度
- 文本样式一致性
- 颜色使用规范
**输出:**
- 0-100 分质量评分
- 错误/警告/提示分类统计
- 按类别细分的问题清单
- 具体修复建议
- 参见:`FIGMA-DESIGN-GUIDELINES.md`
#### `figma_create_icon_sprite`(v1.3.2 新,SVG Sprite 生成)
```typescript
{
svgDir: string; // 包含 SVG 文件的目录
outputPath: string; // sprite.svg 输出路径
typesPath?: string; // 可选,TypeScript 类型文件路径
prefix?: string; // symbol id 前缀,默认 "icon-"
removeFill?: boolean; // 是否移除 fill 以便 CSS color 控制,默认 true
}
```
#### `figma_get_structured_data`(v1.1.0 新,多框架支持)
```typescript
{
figmaUrl?: string; // Figma 链接(可替代 fileKey+nodeId)
fileKey?: string; // Figma 文件 Key
nodeId: string; // 目标节点 ID(必需)
maxDepth?: number; // 最大节点树深度,默认 15(1-30)
accessToken?: string; // 可选,优先用环境变量
}
```
**输出内容:**
- 完整的框架无关 JSON 结构,每个节点包含:
- `id` / `name` - 节点标识
- `role` - 语义角色(button/card/image/text/icon/section 等)
- `type` - Figma 节点类型(FRAME/TEXT/RECTANGLE/GROUP/INSTANCE 等)
- `size` - { width, height }
- `layout` -
Flex 布局属性(display/flexDirection/justifyContent/alignItems/gap/padding 等)
- `styles` - 样式属性(color/backgroundColor/borderRadius/shadow/fontSize/fontWeight 等)
- `text` - 文本内容(仅 TEXT 节点)
- `asset` - 资源信息(图片节点:类型、格式、下载 URL)
- `children` - 子节点数组
- 预览摘要:语义角色、节点类型、尺寸、总节点数、颜色数、资源数、文本节点数
- `structuredContent` - 完整结构化节点树,可直接遍历生成任意框架代码
**适用框架:**
- ✅ React / Next.js / Remix(配合 generate_jsx 更佳)
- ✅ Vue 2/3 / Nuxt
- ✅ Svelte / SvelteKit
- ✅ 原生 HTML / CSS
- ✅ Angular
- ✅ SolidJS
- ✅ Qwik
- ✅ Astro
- ✅ 任意前端框架
#### `figma_download_assets`
```typescript
{
figmaUrl?: string;
fileKey: string;
sceneName: string; // 对应 public/<场景>/ 目录
assetNodeIds: string[]; // 从 generate_jsx 获取的 nodeId 列表
projectRoot?: string; // 项目根目录,默认自动检测
scale?: number; // 导出倍率 1-4,默认 2
svgFormat?: 'svg' | 'png'; // 矢量格式,默认 svg
optimizeSvg?: boolean; // 使用 SVGO 优化 SVG,默认 true
}
```
#### `figma_extract_tokens`
```typescript
{
figmaUrl?: string;
fileKey: string;
nodeId?: string; // 可选,仅提取该节点下的 tokens
colorFormat?: 'hex' | 'rgb' | 'oklch' | 'hsl'; // 默认 oklch(Tailwind v4 推荐)
spacingUnit?: 'px' | 'rem'; // 默认 px
tokenPrefix?: string; // Token 名称前缀
}
```
---
## 💻 CLI 命令参考
```bash
# 全局安装后使用
npm install -g figma-dev-tools
figma-dev <command> [options]
# 或 npx 直接运行
npx figma-dev-tools <command> [options]
# 🖥️ v1.3.0 新:启动 GUI 可视化配置面板
npx figma-dev-tools gui
# 传入 API Key
npx figma-dev-tools --figma-api-key=your-token <command>
npx figma-dev-tools -t your-token <command>
# 切换语言(v1.3.2 新)
npx figma-dev-tools -l zh-CN <command>
```
| 命令 | 功能 | 常用选项 | 版本 |
| ---------------------------- | ---------------------------------------------------- | --------------------------------------------------------------------- | ---------- |
| `figma-dev gui` | **🖥️ 启动 GUI 可视化配置面板** | `--port <n>` 指定端口(默认 54321) | **v1.3.0** |
| `figma-dev install` | 一键安装 MCP 配置到各编辑器 | - | v1 |
| `figma-dev uninstall` | 卸载已安装的 MCP 配置 | - | v1 |
| `figma-dev validate <token>` | 验证 Token | - | v1 |
| `figma-dev wizard` | 交互式配置向导 | `--gui` 启动 GUI 模式 | v1.3.0 |
| `figma-dev init` | 初始化配置(交互式向导) | `--gui` 启动 GUI 模式 | v1.3.0 |
| `figma-dev lang` | **🌍 语言设置**(set/list/switch) | `set <lang>` / `switch` | **v1.3.2** |
| `figma-dev token` | **🔐 Token 安全管理**(set/get/list/delete/default) | `set -t <token>` | **v1.3.2** |
| `figma-dev info <url>` | 查看文件信息 | - | v1 |
| `figma-dev lint <url>` | **✅ 设计规范预检** | `--node <id>` `--depth <n>` `--format md/json` `--output <file>` | **v1.3.2** |
| `figma-dev metadata <url>` | 获取元数据概览 | `--node <id>` `--depth <n>` | v1.1.0 |
| `figma-dev structured <url>` | **获取框架无关结构化数据** | `--node <id>` `--depth <n>` `--format pretty/json` `--output <file>` | v1.1.0 |
| `figma-dev jsx <url>` | **生成 React TSX 组件**(Flex/a11y/设计系统/响应式;v1.4.19 新管线 9 套样式、TS Props、import 整理、`--no-smart-*` 四开关) | `--name` `--scene` `--depth` `--style <9 套>` `--attributify` `--typescript/--no-typescript` `--bundler` `--no-smart-grid/icons/dark/motion` `--skip-lint` | **v1.4.19** |
| `figma-dev vue <url>` | **⭐ v1.4.19 新:生成 Vue SFC**(Vue3 `<script setup>` 默认 / Vue2 Options API;5 套 Vue 样式 + 旁路文件) | `--name` `--scene` `--vue-version 2\|3` `--style tailwind\|unocss\|css-modules\|less\|sass` `--attributify` `--bundler` `--no-smart-grid/icons/dark/motion` | **v1.4.19** |
| `figma-dev batch <url>` | **⭐ v1.4.19 新:整页批量生成**(语义区块拆分,逐块落盘 + barrel 索引) | `--node/--nodes <ids>` `--out <dir>`(默认 `figma-generated`)`--prefix <Prefix>` `--framework react\|vue` `--vue-version 2\|3` `--style` `--no-smart-grid/icons/dark/motion` | **v1.4.19** |
| `figma-dev component <url>` | 生成基础组件(旧 React 管线,推荐 jsx/vue) | `--name <name>` `--node <id>` `--js` `--style tailwind|css-modules|inline-styles` `--no-children` `--output <dir>` | v1 |
| `figma-dev assets <url>` | 下载资源(SVGO 优化;v1.4.18 按构建器落位 public/ 或 src/assets/) | `--node <id>` `--nodes <id1,id2>` `--scene <name>` `--scale <n>` `--svg-format svg|png` `--bundler auto|vite|webpack|nextjs|remix|none` `--project-root <dir>` | **v1.4.18** |
| `figma-dev sync <url>` | 同步 Tokens(v1.4.18 新增 dtcg/all) | `--node <id>` `--format oklch` `--spacing-unit px|rem` `--prefix <name>` `--output-format css|tailwind|json|dtcg|all` `--file-name <name>` | **v1.4.18** |
| `figma-dev screenshot <url>` | 获取截图 | `--node <id>` `--format png` `--scale 2` `--download <dir>` | v1 |
| `figma-dev mcp` | 启动 MCP 服务器(stdio) | - | v1 |
| `figma-dev tutorial` | 查看教程文档(别名 `help`,自动打开浏览器) | `--no-browser` | v1.3.0 |
| `figma-dev cache` | **📦 缓存管理**(status/clear) | `status` / `clear -f` | v1.4.0 |
| `figma-dev privacy` | **🔒 隐私声明**(查看数据安全承诺 + .gitignore 检查) | - | v1.4.0 |
| `figma-dev -v` / `--ver` | **📌 查看当前版本号** | - | **v1.4.8** |
| `figma-dev --update` | **🔄 检查并更新到最新版本**(自动处理 EBUSY 文件占用) | - | **v1.4.8** |
**CLI 示例:**
```bash
# 🖥️ 启动 GUI 可视化配置面板(v1.3.0 新,小白推荐)
figma-dev gui
# 指定端口启动 GUI
figma-dev gui --port 3000
# 通过向导命令启动 GUI 模式
figma-dev wizard --gui
figma-dev init --gui
# 📌 查看当前版本号(v1.4.8 新增)
figma-dev -v
# 🔄 检查并更新到最新版本(v1.4.8 新增,自动处理 EBUSY 文件占用)
figma-dev --update
# 设计规范预检(v1.3.2 新)
figma-dev lint "https://www.figma.com/design/xxx/yyy?node-id=23-11032"
# 一键生成 Hero 区 React 组件(增强版)
figma-dev jsx "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection \
--scene landing-page \
--depth 8
# 🎴 v1.4.18 新:UnoCSS + attributify 归因模式(React/Vue 均可)
figma-dev jsx "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection --framework vue --style unocss --attributify
# 🎴 v1.4.18 新:CSS Modules(自动产出 HeroSection.module.css 旁路文件)
figma-dev jsx "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection --style css-modules
# 💚 v1.4.19 新:Vue3 SFC(<script setup lang="ts">,Tailwind/Sass 等 5 套)
figma-dev vue "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection --style sass
# 💚 v1.4.19 新:Vue2 Options API(defineComponent + PropType/validator)
figma-dev vue "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection --vue-version 2
# 🎻 v1.4.19 新:新样式渲染器(styled/emotion/less/sass/vanilla-extract/panda)
figma-dev jsx "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name PricingCard --style vanilla-extract
# 📦 v1.4.19 新:整页批量生成(自动语义区块拆分,落盘到 figma-generated/)
figma-dev batch "https://www.figma.com/design/xxx/yyy?node-id=1-2" \
--prefix Landing --out src/components/landing
# Vue2 批量:追加 --framework vue --vue-version 2
# 🧠 v1.4.19 新:按需关闭智能推断建议(四项默认全开;MCP 入参 skipEnhancements 为总闸)
figma-dev jsx "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--name HeroSection --no-smart-dark --no-smart-motion
# 🪙 v1.4.18 新:同步 W3C DTCG Tokens(design-tokens.tokens.json)
figma-dev sync "https://www.figma.com/design/xxx/yyy" --output-format dtcg
# 🏢 v1.4.18 新:企业内网自定义 CA(也可写入 .env / MCP env)
$env:FIGMA_CA_CERT_PATH="C:\certs\corporate-root-ca.pem" # PowerShell
export FIGMA_CA_CERT_PATH=/etc/ssl/corp-ca.pem # bash/zsh
# 🌐 v1.4.18 新:资源按指定构建器落位(默认 auto 自动检测)
figma-dev assets "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--scene landing-page --bundler webpack
# ❓ v1.4.18 新:任何命令的 --help 均带中英示例(-l 当次切换语言)
figma-dev jsx --help
figma-dev -l en-US sync --help
# 获取框架无关结构化数据(JSON 格式输出到文件)
figma-dev structured "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--depth 8 \
--format json \
--output ./hero-data.json
# 批量下载资源(自动 SVGO 优化)
figma-dev assets "https://www.figma.com/design/xxx/yyy?node-id=23-11032" \
--scene landing-page \
--nodes "23-11032,23-11050,23-11080" \
--scale 2
# 生成 SVG Sprite(v1.3.2 新,需先下载图标)
# 通过 MCP 工具 figma_create_icon_sprite 调用
# 保存 Token 到系统密钥链(v1.3.2 新)
figma-dev token set -t figd_your_token_here
# 切换到中文界面(v1.3.2 新)
figma-dev lang set zh-CN
```
---
## 🖥️ 支持的编辑器(8+)
| 编辑器 | 一键安装 | GUI 自动检测 | 配置格式 | 手动配置路径 |
| ---------------------------------- | --------------- | ------------ | --------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
| **Trae** | ✅ 自动检测安装 | ✅ | mcpServers | 项目根目录 `.mcp.json` 或 User Settings |
| **VS Code** | ✅ 自动检测安装 | ✅ | mcpServers | `.vscode/mcp.json` 或 User Settings JSON |
| **Cursor** | ✅ 自动检测安装 | ✅ | mcpServers | `~/.cursor/mcp.json`(全局)或项目 `.cursor/mcp.json` |
| **Windsurf** | ✅ 自动检测安装 | ✅ | mcpServers | `~/.codeium/windsurf/mcp_config.json` |
| **Claude Desktop** | ✅ 自动检测安装 | ✅ | mcpServers | `~/Library/Application Support/Claude/claude_desktop_config.json`(macOS)<br>`%APPDATA%\Claude\claude_desktop_config.json`(Windows) |
| **Zed** | ✅ 自动检测安装 | ✅ | **mcp_servers** | `~/.zed/settings.json` |
| **Cline**(VS Code/Cursor 插件) | ✅ 自动检测安装 | ✅ | mcpServers | VS Code/Cursor 全局存储 `cline_mcp_settings.json` |
| **Roo Code**(VS Code/Cursor 插件) | ✅ 自动检测安装 | ✅ | mcpServers | VS Code/Cursor 全局存储 `mcp_settings.json` |
> 💡 **最简单的配置方式**:运行 `figma-dev gui`
> 启动图形界面,**自动检测你电脑上已安装的所有编辑器**,勾选需要配置的编辑器后一键完成安装,无需手动查找配置文件路径。
### MCP 配置模板
**标准格式(Trae/VS Code/Cursor/Windsurf/Claude Desktop/Cline/Roo Code):**
```json
{
"mcpServers": {
"figma-dev-tools": {
"command": "node",
"args": ["<path-to-figma-dev-tools>/dist/index.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "your-figma-token-here"
}
}
}
}
```
**Zed 格式(注意字段名是 mcp_servers):**
```json
{
"mcp_servers": {
"figma-dev-tools": {
"command": "node",
"args": ["<path-to-figma-dev-tools>/dist/index.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "your-figma-token-here"
}
}
}
}
```
**零配置 npx 方式(无需本地安装):**
```json
{
"mcpServers": {
"figma-dev-tools": {
"command": "npx",
"args": ["-y", "figma-dev-tools", "--figma-api-key=figd_your_token_here"]
}
}
}
```
> 💡 使用 `npx figma-dev-tools install` 或 **`figma-dev gui`**
> 会自动检测编辑器并填充正确路径,Zed 会自动使用 `mcp_servers` 字段。
---
## ⚙️ 配置说明
### 环境变量(.env)
复制 `.env.example` 为 `.env` 并填写:
```env
# 必需:Figma Personal Access Token
# 获取地址:https://www.figma.com/developers/api#access-tokens
FIGMA_ACCESS_TOKEN=your-figma-token-here
# 可选:Figma OAuth Token(企业版使用)
FIGMA_OAUTH_TOKEN=
# 可选:自定义 Figma API 端点(企业代理)
FIGMA_API_BASE=https://api.figma.com
# 可选:默认导出倍率(1-4,默认 2)
FIGMA_DEFAULT_SCALE=2
# 可选:默认颜色格式(hex/rgb/oklch/hsl,默认 oklch)
FIGMA_DEFAULT_COLOR_FORMAT=oklch
# 可选:资源输出基础目录(默认 public)
FIGMA_ASSETS_BASE_DIR=public
# 可选:资源 CDN 前缀(默认 /)
FIGMA_CDN_PREFIX=/
# v1.3.2 新增:默认语言(zh-CN/en-US)
FIGMA_DEFAULT_LANG=zh-CN
# v1.3.0 新增:GUI 默认端口(默认 54321)
FIGMA_GUI_PORT=54321
# v1.4.18 新增:自定义 CA 根证书(PEM,企业私有根 CA / HTTPS 解密代理场景)
# Figma API 与 OCR 远程图片下载均生效;文件须存在且含 BEGIN CERTIFICATE 标记
FIGMA_CA_CERT_PATH=/path/to/corporate-root-ca.pem
```
### MCP 配置优先级
Token 读取优先级:
1. 命令行参数 `--figma-api-key` / `-t` / `--token`
2. GUI 界面配置并保存的 Token(v1.3.0 新,自动存入安全存储)
3. 安全存储的默认 Token(v1.3.2 新,`figma-dev token set` 保存)
4. MCP 工具调用时传入的 `accessToken` 参数
5. MCP 配置中的 `env.FIGMA_ACCESS_TOKEN`
6. `.env` 文件中的 `FIGMA_ACCESS_TOKEN`
7. 系统环境变量 `FIGMA_ACCESS_TOKEN`
---
## 🏗️ 架构图
```
┌──────────────────────────────────────────────────────────────────────────────────┐
│ 用户界面层 │
│ ┌──────────────┐ ┌──────────────────────────────────────────────────────────┐ │
│ │ 💻 CLI 终端 │ │ 🖥️ GUI 可视化配置面板 (v1.3.0) │ │
│ │ 命令行交互 │ │ ┌──────┐ ┌──────┐ ┌───────┐ ┌────────┐ ┌──────────┐ │ │
│ │ │ │ │欢迎页│→│语言选│→│Token配│→│编辑器检│→│ 完成页 │ │ │
│ │ │ │ │ │ │择 │ │置验证 │ │测一键装│ │ 教程链接 │ │ │
│ └──────┬───────┘ │ └──────┘ └──────┘ └───────┘ └────────┘ └──────────┘ │ │
│ │ └──────────────────────────┬─────────────────────────────┘ │
│ │ │ 端口 54321/54322/54323 │
└─────────┼─────────────────────────────────────┼────────────────────────────────┘
│ │
└─────────────────┬───────────────────┘
│ HTTP (GUI) / stdio (MCP)
▼
┌──────────────────────────────────────────────────────────────────────────────────┐
│ figma-dev-tools MCP Server v1.4.18 │
│ 🖥️ GUI | 🌍 i18n | ♿ a11y | 🔧 Flex Fix | 📱 Responsive | 🔒 XSS | 🗂️ Hierarchy │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌─────────────────────────────────────┐ │
│ │ figma-url │───▶│figma-client │───▶│ Figma REST API │ │
│ │ 解析器 │ │ API 客户端 │ │ (figma.com) │ │
│ └─────────────┘ └──────┬───────┘ └─────────────────────────────────────┘ │
│ │ 🔒 AES-256-GCM 本地加密缓存 │
│ ┌────────────────┼────────────────┐ │
│ ▼ ▼ ▼ │
│ ┌─────────────┐ ┌──────────────┐ ┌───────────────┐ │
│ │node-processor│ │design-context│ │tokens-extractor│ │
│ │ 节点精简 │ │ 渐进式上下文 │ │ Token 提取 │ │
│ │ GROUP扁平化 │ │ metadata概览 │ │ Variables+Styles│ │
│ │ 🗂️层级自动修复│ │ context详情 │ │ │ │
│ │ 语义角色标注 │ │ │ │ │ │
│ └──────┬──────┘ └──────┬───────┘ └───────┬───────┘ │
│ │ │ │ │
│ └────────┬───────┴───────────┬───────┘ │
│ ▼ ▼ │
│ ┌──────────────┐ ┌────────────────┐ ┌──────────────────┐ │
│ │token-matcher │ │tailwind-mapper │ │ design-linter │ │
│ │多级Token匹配 │ │完整属性映射 │ │ ✅ 设计规范检查 │ │
│ │codeSyntax→ │ │flex/padding/ │ │ Auto Layout/命名 │ │
│ │精确→模糊匹配 │ │gap/shadow等 │ │ 间距/尺寸/无障碍 │ │
│ │ │ │ │ │ 🗂️父子层级错位检测│ │
│ └──────┬───────┘ └───────┬────────┘ └────────┬─────────┘ │
│ │ │ │ │
│ └─────────┬─────────┘ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────────┐ │
│ │ code-generator │───────▶│ v1.4.0 Enhancements │ │
│ │ React JSX生成 │ │ ┌──────────────────┐ │ │
│ │ 语义标签+cn() │ │ │ 🔧 flex-fixer │ │ │
│ │ TODO标记 │ │ │ ♿ a11y-enhancer │ │ │
│ │ 🔒 XSS全链路防护 │ │ │ 🎨 design-system │ │ │
│ │ Prettier格式化 │ │ │ 📱 responsive │ │ │
│ └────────┬─────────┘ │ │ 🎨 svg-inline │ │ │
│ ┌───────────────┴──────────────┐ │ │ ✨ animation │ │ │
│ ▼ ▼ ▼ │ └──────────────────┘ │ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │
│ │asset- │ │ vue-generator│ │ svg-inline │ │ │
│ │downloader │ │ Vue SFC生成 │ │ renderer │ │ │
│ │图片/SVG下载 │ │ │ │ 矢量→内联SVG │ │ │
│ │SVGO优化 │ └──────────────┘ │ svgo优化 │ │ │
│ │publicCdnUrl()│ └──────────────┘ │ │
│ └──────┬───────┘ │ │
│ │ │ │
│ └──────────────┬─────────────────────────────────────────┘ │
│ ▼ │
│ ┌────────────────┐ ┌──────────────┐ ┌─────┐ │
│ │ file-writer │ │ CLI 命令 │ │i18n │ │
│ │ 文件写入 │ │ gui/lint/ │ │ zh/ │ │
│ │ CSS/Tailwind/ │ │ lang/token/ │ │ en │ │
│ │ JSON/TSX/Vue │ │ jsx/structur │ └─────┘ │
│ │ Prettier格式化│ │ ed/sync/asset│ │
│ └────────┬───────┘ └──────┬───────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌──────────────────┐ ┌──────────────────┐ ┌──────────────────────────────┐ │
│ │svg-sprite-gen │ │ token-store │ │ 🖥️ GUI 服务器 (v1.3.0) │ │
│ │SVG Sprite生成 │ │ 🔐 安全存储 │ │ ┌───────┐ ┌───────┐ ┌──────┐ │ │
│ │TS类型定义 │ │ Keychain/凭据管 │ │ │index │ │ app │ │style │ │ │
│ └──────────────────┘ └──────────────────┘ │ │.html │ │.js │ │.css │ │ │
│ │ └───────┘ └───────┘ └──────┘ │ │
│ │ 静态资源 + Express 服务 │ │
│ └──────────────────────────────┘ │
│ │
└───────────────────────────────────────────────────────────────────────────────┘
```
---
## 📋 项目结构
```
figma-dev-tools/
├── bin/
│ └── figma-dev.js # CLI 入口(v1.3.0 新增 gui 命令)
├── mcp-standalone.mjs # 零配置 MCP 入口(v1.1.0 新)
├── gui/ # 🖥️ v1.3.0 新:GUI 可视化配置面板
│ ├── index.html # GUI 主页面
│ ├── app.js # 前端交互逻辑
│ └── styles.css # GUI 样式
├── src/
│ ├── index.ts # MCP 服务器入口(v1.4.0 新增 svg-inline/hierarchy/cache)
│ ├── types.ts # TypeScript 类型定义
│ ├── i18n/ # 🌍 v1.3.2 新:国际化
│ │ ├── index.ts # i18n 核心
│ │ ├── zh-CN.ts # 中文语言包
│ │ └── en-US.ts # 英文语言包
│ ├── cli/
│ │ └── index.ts # CLI 命令定义
│ ├── services/
│ │ ├── figma-client.ts # Figma REST API 客户端(含本地加密缓存)
│ │ ├── node-processor.ts # ⭐ 节点树精简 + 语义标注 + 🗂️层级自动修复
│ │ ├── design-context.ts # ⭐ 渐进式上下文服务
│ │ ├── token-matcher.ts # ⭐ 多级 Token 匹配
│ │ ├── tailwind-mapper.ts # ⭐ Tailwind 属性映射
│ │ ├── code-generator.ts # ⭐ JSX 代码生成(v1.4.0:XSS防护+import分组排序+交互推断+语义标签)
│ │ ├── vue-generator.ts # 🟢 v1.4.0:Vue SFC 代码生成
│ │ ├── flex-fixer.ts # 🔧 Flex 布局修复
│ │ ├── a11y-enhancer.ts # ♿ 无障碍增强
│ │ ├── design-system.ts # 🎨 设计系统对齐
│ │ ├── responsive-inferrer.ts # 📱 响应式推断
│ │ ├── design-linter.ts # ✅ 设计规范检查(含🗂️层级错位检测)
│ │ ├── hierarchy-fixer.ts # 🗂️ v1.4.0:智能层级修复(父子错位自动修复)
│ │ ├── svg-inline-renderer.ts # 🎨 v1.4.0:SVG内联渲染(svgo优化+LRU缓存)
│ │ ├── animation-detector.ts # ✨ v1.4.0:动效检测(基础框架,预留扩展)
│ │ ├── component-mapper.ts # 🧩 v1.4.0:组件库映射(shadcn/ui等检测提示)
│ │ ├── interaction-inferrer.ts # 🤖 v1.4.0:交互逻辑推断(按钮/表单/Tab/弹窗状态自动推断)
│ │ ├── watch-mode.ts # 👁️ v1.4.0:Watch模式(轮询Figma变更自动重生成代码)
│ │ ├── cache.ts # ⚡ v1.4.0:AES-256-GCM本地加密缓存(LRU+TTL)
│ │ ├── code-formatter.ts # 💅 Prettier 代码格式化
│ │ ├── asset-downloader.ts# ⭐ 资源下载管线(SVGO 优化)
│ │ ├── svg-sprite-generator.ts # 🧩 SVG Sprite 生成
│ │ ├── token-store.ts # 🔐 Token 安全存储
│ │ ├── tokens-extractor.ts# Tokens 提取
│ │ └── file-writer.ts # 文件写入
│ ├── types/
│ │ └── nodes.ts # 节点类型定义
│ └── utils/
│ ├── figma-url.ts # URL 解析
│ ├── color.ts # 颜色转换 + CIE76 色差
│ ├── cn.ts # className 合并工具(tailwind-merge + clsx)
│ ├── security.ts # 🔒 v1.4.0:XSS安全防护(6个安全函数)
│ └── errors.ts # 错误处理
├── dist/ # 编译输出
├── .env.example # 环境变量模板
├── FIGMA-DESIGN-GUIDELINES.md # 📖 Figma 设计规范指南
├── DEVELOPMENT.md # 开发文档
├── OPTIMIZATION-ANALYSIS.md # 优化分析
├── package.json # v1.4.0
├── tsconfig.json
├── README.md # 本文件
├── LICENSE # MIT 许可证
└── SKILL.md # AI Agent 使用指南
```
---
## ❓ FAQ / 故障排除
### Q: 我是小白,第一次使用不知道怎么配置?
**解决(v1.3.0 新功能 - 最简单方式):**
直接运行 GUI 可视化配置向导,无需记忆任何命令:
```bash
npx figma-dev-tools gui
```
浏览器会自动打开配置界面,按照引导步骤点击即可:
1. 选择中文语言
2. 粘贴你的 Figma Token(自动验证)
3. 勾选要配置的编辑器(自动检测已安装的)
4. 点击一键安装,完成!
### Q: 如何启动 GUI 图形界面配置?
**解决(v1.3.0 新):** 有三种方式启动 GUI:
```bash
# 方式一:直接启动 gui 命令(推荐)
figma-dev gui
# 或 npx figma-dev-tools gui
# 方式二:向导命令加 --gui 参数
figma-dev wizard --gui
# 方式三:初始化命令加 --gui 参数
figma-dev init --gui
```
- 默认端口:**54321**
- 如果 54321 被占用,自动尝试 54322、54323
- 启动后自动打开默认浏览器
- 支持中英文切换
- Token 输入实时验证有效性
- 自动检测 8+ 种编辑器并一键安装配置
### Q: GUI 可以自定义端口吗?
**解决(v1.3.0 新):**
```bash
# 指定端口启动
figma-dev gui --port 3000
# 或通过环境变量
FIGMA_GUI_PORT=3000 figma-dev gui
```
### Q: MCP 服务器无法启动?
**检查:**
1. 是否已执行 `npm install && npm run build`(或 pnpm/yarn/bun 对应命令)
2. `dist/index.js` 文件是否存在
3. Node.js 版本 ≥ 20(`node -v` 检查)
4. MCP 配置中的路径是否正确(建议用绝对路径)
5. 零配置方式可直接用 `npx -y figma-dev-tools --figma-api-key=xxx`
6. **推荐先用 GUI 配置**:`figma-dev gui`,自动帮你完成所有配置
### Q: API 请求返回 401 Unauthorized?
**解决:**
1. 检查 `FIGMA_ACCESS_TOKEN` 是否正确配置
2. 确认 Token 没有过期(重新生成一个试试)
3. 确认 Token 勾选了 **File content (Read only)** 权限
4. 确认你有权限访问该 Figma 文件(文件需对链接可见或你是协作者)
5. v1.3.0+ 可使用 **GUI 界面**输入 Token,实时验证有效性
6. v1.3.2+ 可使用 `figma-dev token set` 安全存储,避免明文配置错误
7. 尝试通过 `--figma-api-key` 参数直接传入 Token
### Q: 生成的图标变成椭圆/变形了?
**解决(v1.3.2 自动修复):**
- 这是 Flex 布局的经典问题:Flex 容器默认 `align-items: stretch` 会拉伸子元素
- v1.3.2 的 `figma_generate_jsx` 已自动检测并添加 `align-items: center` +
`flex-shrink: 0` + 固定宽高修复
- 如果问题仍然存在,可调用 `figma_lint_design` 检查设计稿中 Auto Layout 的设置
### Q: 我用的是 Vue/Svelte/其他框架,不是 React?
**解决:** 使用 v1.1.0 新增的 `figma_get_structured_data`
工具,它输出框架无关的 JSON 结构,包含完整的节点层级、样式、文本、资源信息,你可以基于这个数据生成任意框架的代码。
CLI 也支持:
```bash
npx figma-dev structured "https://www.figma.com/design/xxx/yyy?node-id=23-11032" --format json
```
> 💡 在 GUI 配置的"框架偏好"步骤中可以选择你常用的框架。
### Q: 生成的组件颜色/间距与设计稿不一致?
**解决:**
1. 确保 Figma 中使用了 **Variables** 定义颜色/间距,并设置了 `codeSyntax.WEB`
2. v1.3.2 的设计系统对齐功能会自动匹配颜色/间距/字体/圆角/阴影变量
3. 颜色格式推荐 `oklch`(Tailwind v4 原生支持),如遇问题切换为 `hex`
4. 未命中现有 token 的颜色会通过 `@theme inline` 扩展,不要直接写 `bg-[#hex]`
5. 检查生成代码中的 TODO 注释和设计系统建议报告
6. 生成前先调用 `figma_lint_design` 检查设计稿规范
### Q: 生成代码有很多冗余嵌套 div?
**解决:**
1. 使用 v1.4.0 的 `figma_generate_jsx` 而非旧版 `figma_generate_component`
2. UI 设计师应避免多层无意义 Group 嵌套(用 Frame 划分区域)
3. 调用 `figma_lint_design` 检查嵌套层级问题
4. 检查生成代码中标记为 layout-only 的节点是否被错误保留
5. 大区块建议拆分后逐块生成,避免单次处理过深节点树
### Q: 图片资源没有自动下载?
**解决:**
1. 必须调用 `figma_download_assets` 工具,传入 `generate_jsx` 输出的
`pendingAssets[].nodeId`
2. 确保 `sceneName` 参数已设置(资源会放到 `public/<场景名>/` 目录)
3. v1.3.2 下载时自动使用 SVGO 优化 SVG,移除冗余属性
4. 检查 Figma 中的图片节点是否有 IMAGE fill
5. 网络问题:Figma 图片 CDN 可能需要科学上网
### Q: 如何让生成的代码支持响应式?
**解决(v1.3.2 新功能):**
1. v1.3.2 的 `figma_generate_jsx`
会自动推断响应式断点,在响应式建议报告中给出 sm/md/lg 前缀建议
2. 设计稿建议按移动端/桌面端分别设计,或使用 Auto Layout 约束
3. 根据响应式建议,手动调整类名添加响应式前缀(如 `md:flex-row`)
### Q: 生成的代码缺少无障碍属性?
**解决(v1.3.2 自动增强):**
- v1.3.2 的 `figma_generate_jsx` 已自动添加:
- 语义化 HTML 标签(`<button>` 而非 `<div onClick>`、`<h1>-<h6>` 等)
- 图片 alt 文本
- ARIA 标签和角色
- 无障碍最小点击尺寸提示
- 无障碍增强报告会列出所有添加的增强项
- 调用 `figma_lint_design` 检查设计稿中的无障碍问题
### Q: API 请求频率限制?
- Figma API 有速率限制(约 60 请求/分钟)
- 批量下载资源时工具内部已自动节流
- 大文件建议拆分处理,避免短时间大量请求
### Q: 支持哪些前端框架?
- **React + Tailwind CSS**:一级支持(TSX 代码生成 + v1.3.2 全增强)
- **Vue 2/3 / Nuxt**:通过 `figma_get_structured_data`
获取结构化数据,AI 可生成 Vue SFC
- **Svelte / SvelteKit**:同上
- **Angular**:同上
- **SolidJS / Qwik**:同上
- **原生 HTML / CSS**:同上
- **Astro**:同上
- **Next.js**:支持,但注意不要用 `next/image`(用普通 `<img>` 或
`publicCdnUrl()`)
- **Vite + React**:推荐,与生成代码最匹配
> 💡 在 GUI 配置向导中可以选择你的框架偏好。
### Q: Zed 编辑器配置不生效?
**解决:** Zed 使用 `mcp_servers` 字段(下划线),不是 `mcpServers`(驼峰)。
- 使用 **`figma-dev gui`** 图形界面一键配置,自动处理 Zed 的字段差异
- 或使用 `npx figma-dev-tools install` 也会自动处理这个差异
### Q: 如何切换界面语言?
**解决(v1.3.2 新):**
```bash
# CLI 交互式切换
figma-dev lang switch
# 直接设置
figma-dev lang set zh-CN # 中文
figma-dev lang set en-US # English
# 或通过环境变量
FIGMA_DEFAULT_LANG=zh-CN
```
> 💡 在 GUI 配置界面的第二步也可以直接选择语言。
### Q: 如何安全存储 Figma Token?
**解决(v1.3.0+ 推荐):**
- **最简单**:运行
`figma-dev gui`,在 GUI 界面输入 Token,自动验证并存入安全存储
- **命令行方式**(v1.3.2 新):
```bash
# 交互式保存(推荐,会验证 Token)
figma-dev token set
# 直接保存
figma-dev token set -t figd_your_token_here
# 列出已保存 Token
figma-dev token list
# 查看 Token(掩码显示)
figma-dev token get
# 设置默认 Token
figma-dev token default work
```
Token 会保存在系统安全存储中:
- macOS: Keychain
- Windows: Credential Manager
- Linux: libsecret(如不可用则回退到加密文件)
---
## 📖 设计规范
参见
**[FIGMA-DESIGN-GUIDELINES.md](./FIGMA-DESIGN-GUIDELINES.md)**,这是给设计师和 AI 的完整 Figma 设计规范指南,包含:
- Auto Layout 使用规范
- 图层命名约定
- 4px/8px 网格系统
- 组件复用建议
- 无障碍设计要求
- 设计到代码的最佳实践
生成代码前建议先运行 `figma_lint_design` 检查设计稿质量。
---
## 🎯 与其他方案对比
> 以下对比基于 2025-2026 年公开信息整理,仅反映 figma-dev-tools v1.4.4 与各方案的能力差异,不代表对方全部能力。标注"需确认"表示公开资料未明确说明。
### vs 商业 SaaS 方案
| 对比维度 | figma-dev-tools v1.4.4 | Builder.io | Anima | Locofy | Seal(网易海豹 D2C) |
| ----------------------- | ----------------------------------- | ----------------------- | -------------------- | ---------------------- | ------------------------ |
| **定位** | 开源 MCP 工具链 | 商业 SaaS + AI 平台 | 商业 SaaS | 商业 SaaS | 企业内部工具 / Figma 插件 |
| **价格** | **免费开源**(MIT) | 免费增值(Pro $24/mo+) | 免费增值($20/mo+) | 免费增值($29/mo+) | 免费(需注册) |
| **MCP 协议支持** | ✅ | ✅ | ✅ | ✅ | ❌ |
| **GUI 可视化配置** | ✅ v1.3.0(浏览器图形界面) | ✅(Fusion 画布) | ✅(AI Playground) | ✅(Figma 插件) | ✅(Figma 插件) |
| **React 代码生成** | ✅ TSX + Tailwind | ✅ | ✅ | ✅ | ✅ |
| **Vue 代码生成** | ✅ v1.4.0(Vue 3 SFC + UnoCSS) | ✅ | ✅ | ✅ | ✅ |
| **框架无关结构化数据** | ✅ v1.1.0(JSON 输出) | ❌ | ❌ | ❌ | ❌ |
| **设计 Tokens 提取** | ✅ Variables + Styles | ✅ | 需确认 | ✅ | 需确认 |
| **Flex 布局自动修复** | ✅ v1.3.2(图标变形/文本截断) | 部分(自动响应式) | ✅ | ✅ | ✅(自动布局还原) |
| **无障碍(a11y)增强** | ✅ v1.3.2(语义标签/alt/ARIA) | ✅(Review agents) | 需确认 | ✅(Agent Mode) | 需确认 |
| **资源自动下载** | ✅ publicCdnUrl + SVGO | ✅ | ✅ | ✅ | 需确认 |
| **还原度校验(像素 diff)** | ✅ v1.4.4(pixelmatch + 热力图) | ❌ | ❌ | 需确认("pixel-perfect"宣传) | 部分(设计稿检查) |
| **付费墙兜底(截图保底)** | ✅ v1.4.4(Playwright + 视觉近似) | ❌ | ❌ | ❌ | ❌ |
| **多编辑器集成** | ✅ 8+(GUI 自动检测一键安装) | ✅(VS Code/Cursor) | ✅(Frontier 扩展) | ✅(Cursor/Windsurf 等) | ❌ |
| **CLI 命令行** | ✅ 20+ 命令 | ✅(Visual Copilot CLI) | 需确认 | 需确认 | ❌ |
| **i18n 国际化** | ✅ v1.3.2(中英文双语) | ✅ | 需确认 | ✅(Agent Mode 指令) | 需确认 |
| **Token 安全存储** | ✅ v1.3.2(系统密钥链) | ✅ | 需确认 | 需确认 | 需确认 |
### vs 开源 / 官方工具
| 对比维度 | figma-dev-tools v1.4.4 | @figma/code-connect | Framelink Figma MCP | figma-mcp(社区) | Design Lint AI |
| ----------------------- | ----------------------------------- | ----------------------------- | ------------------------------ | --------------------- | ------------------------- |
| **定位** | 开源 MCP 工具链 | Figma 官方组件映射 | 开源 MCP(8k+ stars) | 开源 MCP(多个项目) | Figma 插件 |
| **价格** | **免费开源**(MIT) | 免费(需 Dev/Full 席位) | 免费开源(MIT) | 免费开源 | 免费增值(Pro $19/mo+) |
| **MCP 协议支持** | ✅ | ✅(与官方 MCP 集成) | ✅ | ✅ | ❌ |
| **GUI 可视化配置** | ✅ v1.3.0 | ✅(Code Connect UI 公测) | ❌(配置文件驱动) | ❌ | ✅(Figma 插件) |
| **代码生成** | ✅ 一键 TSX/Vue | ❌(仅组件映射,非 D2C) | ❌(仅提供数据,由 AI 生成) | ❌(仅提供数据) | N/A(非代码生成工具) |
| **设计 Tokens 提取** | ✅ | ✅(variables + code syntax) | ❌ | ❌ | ✅(Token validation) |
| **Flex 布局自动修复** | ✅ v1.3.2 | ❌ | ❌ | 部分(Auto-Layout 配置) | ❌ |
| **无障碍(a11y)增强** | ✅ v1.3.2 | ❌ | ❌ | ❌ | ✅(WCAG 检查) |
| **资源自动下载** | ✅ | ❌ | ✅(download_figma_images) | ✅ | ❌ |
| **还原度校验(像素 diff)** | ✅ v1.4.4 | ❌ | ❌ | ❌ | ❌ |
| **付费墙兜底(截图保底)** | ✅ v1.4.4 | N/A(官方功能不涉及付费墙) | ❌ | ❌ | ❌ |
| **多编辑器集成** | ✅ 8+(GUI 自动检测) | ✅(VS Code/Cursor/Android Studio 等) | ✅(所有 MCP 客户端) | ✅(所有 MCP 客户端) | ❌ |
| **CLI 命令行** | ✅ 20+ 命令 | ✅(`figma connect` CLI) | ✅(npx 启动) | ✅ | ❌(Team API) |
| **i18n 国际化** | ✅ v1.3.2 | ❌ | ❌ | ❌ | ❌ |
| **SVG Sprite 生成** | ✅ v1.3.2 | ❌ | ❌ | ❌ | ❌ |
### 差异化优势
- **付费墙兜底**:figma-dev-tools v1.4.4 独有的 `BrowserFallbackService`,当 Figma REST API 因付费墙失败时自动启动 Playwright 截图保底,竞品中无一提供类似机制
- **还原度校验闭环**:`figma_verify_fidelity` 提供像素 diff + 差异热力图 + 量化评分(0-100%),其他工具多停留在"pixel-perfect"宣传,无自动化校验
- **框架无关结构化数据**:`figma_get_structured_data` 输出标准 JSON,支持任意框架,商业 SaaS 多锁定特定框架
- **开源 + 免费 + 全功能**:MIT 许可,无需付费席位即可使用全部 22 个 MCP 工具
---
## 📜 License
MIT © figma-dev-tools contributors
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues