UNPKG

figma-restoration-tools

Version:

Professional Figma Component Restoration Kit - MCP tools with snapDOM-powered high-quality screenshots, intelligent shadow detection, and smart debugging for Vue component restoration. Includes figma_compare and snapdom_screenshot tools.

201 lines (177 loc) 8.33 kB
--- alwaysApply: true --- # 🔄 持续生效规则:Figma组件还原流程 # 工作目录范围 你始终在 figma-restoration-mcp-vue-tools目录下的文件工作 # Figma组件还原流程规则 ## 概述 当用户要求还原Figma组件并提供Figma链接时,严格按照以下7步流程执行。 ## 流程步骤 ### 步骤1: 获取Figma数据 - 使用工具获取Figma JSON数据 - 参数设置: - `fileKey`: 从Figma链接中提取 - `nodeId`: 从Figma链接中提取 - **⭐ savePath**: **必须使用绝对路径** `/Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}` - 工具会自动保存JSON到指定目录 ### 步骤2: 分析JSON内容 分析返回的JSON数据,确认以下关键信息: 1. **页面结构**: - 组件层级关系 - 布局方式(**优先使用flex布局,非必要不使用绝对定位** - 尺寸和位置信息 2. **🆕 智能素材节点识别**: - **根据节点名字识别**: 检测名字中含有 `ic``ic_``素材``material``asset``icon``img``image` 等关键词 - **自动跳过子节点**: 当识别为素材节点时,直接导出该节点,不再分析其子节点 - **图片节点**: imageRef填充的节点 - **图标节点**: SVG矢量图标 - **背景图片**: 背景填充图片 - **优先级**: 名字识别 > 类型+填充识别 3. **子组件识别**: - 嵌套的组件实例 - 可复用的UI元素 4. **样式信息**: - 颜色、字体、边框 - 阴影、圆角等效果 - 响应式布局需求 输出:生成符合Web标准、层级分明的优化JSON结构 ### 步骤2.5: 🆕 基于位置和可见性优化JSON **⭐ 新增关键步骤** - 生成符合Web最佳实践的优化JSON: - **位置分析验证**: - 对比Figma坐标与预期截图(expected.png) - 识别和移除在预期图中不可见的冗余元素 - 验证每个元素在视觉输出中的实际作用 - **布局结构优化**: - 将Figma的绝对定位转换为现代flex布局 - 分析元素间的相对位置关系 - 确定合理的padding和gap值 - 不使用margin - **HTML结构映射**: - 确定元素的语义角色(容器、内容、装饰等) - 规划合理的DOM层级结构 - 考虑flex布局中的元素顺序 - **输出优化JSON**: - 包含经过验证的元素列表 - 明确的CSS布局策略(flex优先) - 精确的尺寸和间距规范 - 符合Web标准的实现方案 ### 步骤3: 使用tool下载素材 - **🆕 规范目录结构** - **⭐ 素材和结果文件分类存储**``` /Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}/ ├── index.vue # Vue 组件 ├── metadata.json # 组件元数据 ├── layout-analysis.json # 布局分析JSON ├── figma-{fileKey}-{nodeId}-{timestamp}.json # Figma原始数据 ├── images/ # ⭐ 素材文件目录 │ ├── folder-icon.svg # 图标文件 │ ├── project-icon.svg # 项目图标 │ └── background.png # 背景图片等 └── results/ # ⭐ 截图对比结果目录 ├── expected.png # Figma原图 ├── actual.png # 组件截图 ├── diff.png # 差异对比图 ├── figma-analysis-report.json # 分析报告 ├── figma-analysis-report.md # 分析报告MD └── region-analysis.json # 区域分析 ``` - **素材准备方式**: - 从Figma手动导出图片素材到images目录 - 确保素材命名符合规范(icon_xxx.svg, image_xxx.png等) - 推荐使用高分辨率素材(2x或3x) ### 步骤4: 递归还原子组件 对于识别出的子组件: - 每个子组件重新执行步骤1-7的完整流程 - 创建独立的组件目录结构 - 确保组件间的依赖关系正确 - 优先还原基础组件,再还原复合组件 ### 步骤5: 生成Vue组件代码 基于优化的JSON、准备的素材和制作的子组件生成代码: - **技术栈要求**: - Vue 3 Composition API - TypeScript支持 - **优先使用flex布局,避免绝对定位** - **代码结构**: - 响应式设计 - 不需要语义化HTML结构 - **文件生成**: - `index.vue`: 主组件文件 - `metadata.json`: 组件元数据(尺寸、描述等) - **⭐ 组件自动注册**: Vue组件在项目中通过 `src/components/index.ts` 自动注册,无需检查注册相关代码 ### 步骤6: 组件截图 使用工具进行高质量组件截图: - **基本参数**: - `componentName`: 组件名称 - `projectPath`: 项目根路径 - `port`: **⭐ 必须使用用户启动的服务器端口号** - **⭐ 必须指定输出路径**: - **outputPath**: **必须使用绝对路径到组件的results目录下的actual.png** - **路径格式**: `/Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}/results/actual.png` - **截图配置**: - `snapDOMOptions`: 高质量截图配置 - `scale`: 3(高分辨率) - **⭐ padding设置规则**: - **无阴影组件**: `padding: 0` (精确裁切,提升还原度) - `backgroundColor`: "transparent" - `embedFonts`: true ### 步骤7: 还原度对比 使用工具进行像素级对比分析: - **基本参数**: - `componentName`: 组件名称 - `threshold`: 0.02(98%还原度要求) - `generateReport`: true - **⭐ 必须指定输出路径**: - **必须与步骤6使用相同的results目录** - **路径格式**: `/Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}/results` - **⭐ 结果存储位置**: - expected.png, actual.png, diff.png 存储在组件的results目录 - 分析报告存储在同一results目录下 - 分析对比结果,识别差异点 ### 步骤8: 自我反思优化 如果还原度 < 98%: - **问题分析**: - 布局差异(位置、尺寸、对齐) - 样式差异(颜色、字体、效果) - 素材问题(缺失、错误、质量) - **🆕 素材节点问题**: 检查是否正确识别了所有素材节点 - **优化策略**: - 重新分析JSON结构(回到步骤2) - **🆕 验证素材节点识别**: 确认所有 `ic``ic_``素材` 等关键词节点已正确处理 - 调整CSS样式和布局(**优先使用flex布局优化** - 重新准备或优化素材 - 修复子组件问题 - **迭代流程**: - 最多迭代3次 - 每次迭代都要重新截图对比 - 记录改进点和剩余问题 ## 🆕 路径配置最佳实践 ### ⭐ 分类路径配置(推荐) - **Figma数据savePath**: **必须使用绝对路径**到组件根目录 - **素材下载localPath**: **必须使用绝对路径**到组件的images目录 - **Figma预期截图**: **必须下载到results目录**(expected.png) - **截图工具outputPath**: **必须使用绝对路径**到results目录下的actual.png - **对比工具outputPath**: **必须使用绝对路径**到results目录 **路径格式**: - **素材路径**: `/Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}/images` - **结果路径**: `/Users/yujie_wu/Documents/study/11111/figma-restoration-mcp-vue-tools/src/components/{ComponentName}/results` ### 🎯 路径规则 - **Figma JSON savePath**: 组件根目录的绝对路径 - **素材下载**: images目录的绝对路径 - **截图对比**: results目录的绝对路径 - **必须分类存储**: 素材文件在images目录,结果文件在results目录 - **必须保持一致**: 截图和对比工具使用相同的results文件夹 ## 质量标准 ### 代码质量 - 遵循Vue 3最佳实践 - TypeScript支持 - **优先使用flex布局,避免绝对定位** - **🆕 CSS盒模型规范**: - **任何设置了padding的元素必须设置 `box-sizing: border-box`** - 这遵循Figma的实现方式,确保元素尺寸包含padding - 推荐在组件根元素设置通用规则:`.component, .component * { box-sizing: border-box; }` - 响应式设计支持 - 无障碍访问性 - 性能优化 - 及时更新进度和状态 - 遇到问题时主动寻求帮助