--- name: figma-make-project-converter description: 将 Figma Make 导出的 Vite + React 项目转换为本项目页面组件或主题的流程规范;在处理 @/ 路径、package@version 别名、globals.css 样式迁移与主题提取时使用。 --- # Figma Make 项目转换规范 将 Figma Make 导出的 Vite + React 项目转换为本项目页面组件或主题,尽量保持视觉效果、样式 token 和组件结构。 ## 核心目标 - 保持页面视觉与层级结构一致 - 移除对 Figma Make 原始 Vite 入口和版本化 alias 的依赖 - 产出可在本项目中继续演化的页面组件或主题 ## 使用方式 ### 步骤 1:运行预处理脚本 推荐输入来源: - 优先使用 **Figma 原始导出的 ZIP 工程包** - 由系统先解压 ZIP,再把解压后的项目目录传给本脚本 - 不建议手工解压后再挑文件、删文件或重组目录,否则容易破坏 Figma 原始项目结构,降低后续导入稳定性 ```bash node scripts/figma-make-converter.mjs [output-name] # 示例 node scripts/figma-make-converter.mjs "temp/my-figma-make-project" my-page node scripts/figma-make-converter.mjs "temp/my-figma-make-project" brand-theme --target-type themes ``` 脚本会自动完成: - 完整复制 Figma Make 项目到 `src/prototypes/[页面名]/` 或 `src/themes/[theme-key]/` - 排除 `node_modules`、`.npm-local-cache`、`build` - 转换 `@/` 为相对路径 - 将源码中的 `package@version` 导入改为裸包名 - 分析组件、页面、依赖、CSS、设计文档 - 生成 AI 工作文档和分析报告 ### 步骤 2:按任务清单完成转换 重点查看: - `.figma-make-tasks.md` - `.figma-make-analysis.json` - 主题模式下的 `.figma-make-theme-tasks.md` ## Figma Make 项目特征 典型结构: ```text figma-make-project/ ├── src/ │ ├── App.tsx │ ├── main.tsx │ ├── index.css │ ├── DESIGN_SYSTEM_GUIDE.md │ ├── TOKEN_REFERENCE.md │ ├── components/ │ ├── pages/ │ ├── styles/globals.css │ └── guidelines/ ├── index.html ├── package.json └── vite.config.ts ``` 导入时应把这套原始 ZIP 中的目录结构视为权威结构,尤其是: - `src/App.tsx` - `src/main.tsx` - `src/index.css` - `src/styles/globals.css` - `src/components/**` - `src/pages/**` - `src/guidelines/**` - `package.json` - `vite.config.ts` - `index.html` 说明: - `Attributions.md`、`guidelines/Guidelines.md`、`README.md`、`TOKEN_REFERENCE.md`、`DESIGN_SYSTEM_GUIDE.md` 这类文件在 Figma 原始导出中是正常组成部分,不应误判为异常垃圾文件 - 转换时的重点不是删掉这些文件,而是识别哪些文件是页面真实依赖,哪些是说明文档 关键判断: - 这是 **Vite + React** 项目,不是 Next.js - 不需要处理 `"use client"` - `vite.config.ts` 里的 `package@version` alias 只是导出兼容层,不应作为最终运行前提 ## 保留导出所需的原始文件 如果导入后的目录中已经包含以下 Figma Make 原始资产,后续转换时必须保留,不要删除或覆盖为无关内容: - `canvas.fig`:Figma Make 的二进制设计数据,用于后续回写源码并导出 `名称.fig` - `meta.json`:项目元数据,至少保留 `file_name`、`exported_at`、`client_meta` - `ai_chat.json`:AI 聊天历史,可为空对象 `{}` - `thumbnail.png`:项目缩略图 - `canvas.code-manifest.json`:`canvas.fig` 中 `CODE_FILE` 的索引清单 - `images/`:设计稿图片资源,通常为 hash 命名,不要随意重命名 如果脚本分析报告里出现 `figmaMakeAssets` 字段,说明这些文件已经被保留在导入目录中,AI 在后续整理页面结构时仍需继续保留它们。 ## 页面转换规则 ### 固定目录结构 为了兼顾 Axhub 运行时和后续 `.fig` 导出,页面目录默认采用以下固定结构: ```text / ├── index.tsx # Axhub runtime adapter only ├── style.css # root style bridge only └── src/ ├── App.tsx # Figma export shell only ├── main.tsx # Vite mount only ├── index.css # Figma style bridge only ├── components/ # shared page implementation └── styles/ # shared page styles ``` 转换时请遵守: - 页面真实视觉和交互主体优先沉淀到 `src/components/**` - 根目录 `index.tsx` 只负责 Axhub 运行时数据、事件、变量适配 - `src/App.tsx` 只负责挂载共享页面主体 - `style.css` / `src/index.css` 尽量只做样式桥接,不重复堆业务样式 - 在 `index.tsx`、`src/App.tsx`、`src/main.tsx` 顶部写职责注释,提醒后续维护者不要让入口漂移 执行本技能后的最终项目必须符合这套固定结构;如果当前输出仍是双入口各自维护一套页面逻辑,视为转换未完成。 ### 页面组件规范 默认先转换为普通 React 页面组件。只有明确需要接入 Axhub / Axure 运行时能力时,才额外引入 `forwardRef` 和 `axure-types`。 推荐格式: ```tsx import './style.css'; import React from 'react'; export default function PageName() { return
; } ``` ### 入口收敛 - 优先从 `src/App.tsx` 收敛为本项目的 `index.tsx` - `src/main.tsx` 只作为原始挂载入口参考,不保留为最终运行入口 - 若 `src/pages/` + 路由很多,最终仍要收敛为本项目单入口页面组件 - 如果页面后续还要重新导出为 Figma 资产,务必反向维护一个与根目录 `index.tsx` 同步的导出壳子 `src/App.tsx` - 最稳妥的方式是让 `src/App.tsx` 尽量薄,只做包装或直接复用当前页面组件,避免出现两套页面逻辑长期漂移 ### 路径与 alias - `@/` 统一视为 `./src` - 若源码里还残留 `package@version` 导入,继续改为裸包名 - `vite.config.ts` 可以保留作参考,但最终组件不能依赖其中 alias 才能运行 ## 样式处理规则 Figma Make 的 `src/index.css` 常常是 Tailwind v4 构建产物,默认不要直接搬运为最终 `style.css`。 ### `style.css` 生成策略 最终页面的 `style.css` 采用: ```css @import "tailwindcss"; ``` 然后以 `src/styles/globals.css` 为主要样式来源继续整理。 规则: - `src/styles/globals.css` 是主样式来源 - `src/index.css` 只作为视觉回归参考 - 若 `globals.css` 缺失,再结合组件现有样式补齐 - 如果页面后续还要重新导出 `.fig`,需要同时保证导出壳子使用的 `src/index.css` 与最终 `style.css` 保持一致,至少不能明显漂移 ## 依赖处理 保留需要的运行依赖,默认排除: - `react` - `react-dom` - `next-themes` 如果分析报告里有这些包以外的依赖,按需执行: ```bash pnpm add <依赖名> ``` ## 主题导入规则 当目标是 `themes` 时,优先从以下来源提取 token: - `DESIGN_SYSTEM_GUIDE.md` - `TOKEN_REFERENCE.md` - `src/styles/globals.css` - 组件里的 CSS 变量和设计语义 期望产物: - `src/themes//globals.css` 或 `designToken.json` - `src/themes//DESIGN-SPEC.md` - `src/themes//index.tsx` 同时可按需补充: - `src/docs/` - `src/database/` ## 验收标准 页面模式: ```bash node scripts/check-app-ready.mjs /prototypes/ ``` 验收要求: - 页面正常渲染 - 无控制台错误 - 主视觉与原项目基本一致 - 不再依赖原始 Vite alias 才能运行 主题模式: - token 文件存在且结构完整 - `DESIGN-SPEC.md` 说明清晰 - 主题演示入口能体现核心 token 效果 ## 常见注意点 - 不要把 `src/index.css` 直接当最终 `style.css` - 不要继续保留对 `package@version` alias 的运行时依赖 - 不要把完整多页面路由壳层原封不动塞进最终页面组件 - 优先利用设计文档和 CSS 变量提取主题,而不是只看视觉截图 - 如果目录内已有 `canvas.fig`、`meta.json`、`images/` 等原始资产,转换时不要删除它们 - 如果目录内已有 `src/App.tsx` / `src/index.css` 作为 Figma 导出壳子,修改根目录页面后要同步更新它们,否则后续导出的 `.fig` 会与当前页面不一致