Optimized the root .gitignore to exclude virtual environments, node modules, and temp folders to ensure clean and lightweight version tracking. Co-authored-by: Cursor <cursoragent@cursor.com>
8.1 KiB
8.1 KiB
name, description
| name | description |
|---|---|
| figma-make-project-converter | 将 Figma Make 导出的 Vite + React 项目转换为本项目页面组件或主题的流程规范;在处理 @/ 路径、package@version 别名、globals.css 样式迁移与主题提取时使用。 |
Figma Make 项目转换规范
将 Figma Make 导出的 Vite + React 项目转换为本项目页面组件或主题,尽量保持视觉效果、样式 token 和组件结构。
核心目标
- 保持页面视觉与层级结构一致
- 移除对 Figma Make 原始 Vite 入口和版本化 alias 的依赖
- 产出可在本项目中继续演化的页面组件或主题
使用方式
步骤 1:运行预处理脚本
推荐输入来源:
- 优先使用 Figma 原始导出的 ZIP 工程包
- 由系统先解压 ZIP,再把解压后的项目目录传给本脚本
- 不建议手工解压后再挑文件、删文件或重组目录,否则容易破坏 Figma 原始项目结构,降低后续导入稳定性
node scripts/figma-make-converter.mjs <figma-make-project-dir> [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 项目特征
典型结构:
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.tsxsrc/main.tsxsrc/index.csssrc/styles/globals.csssrc/components/**src/pages/**src/guidelines/**package.jsonvite.config.tsindex.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@versionalias 只是导出兼容层,不应作为最终运行前提
保留导出所需的原始文件
如果导入后的目录中已经包含以下 Figma Make 原始资产,后续转换时必须保留,不要删除或覆盖为无关内容:
canvas.fig:Figma Make 的二进制设计数据,用于后续回写源码并导出名称.figmeta.json:项目元数据,至少保留file_name、exported_at、client_metaai_chat.json:AI 聊天历史,可为空对象{}thumbnail.png:项目缩略图canvas.code-manifest.json:canvas.fig中CODE_FILE的索引清单images/:设计稿图片资源,通常为 hash 命名,不要随意重命名
如果脚本分析报告里出现 figmaMakeAssets 字段,说明这些文件已经被保留在导入目录中,AI 在后续整理页面结构时仍需继续保留它们。
页面转换规则
固定目录结构
为了兼顾 Axhub 运行时和后续 .fig 导出,页面目录默认采用以下固定结构:
<page>/
├── 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。
推荐格式:
import './style.css';
import React from 'react';
export default function PageName() {
return <div />;
}
入口收敛
- 优先从
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 采用:
@import "tailwindcss";
然后以 src/styles/globals.css 为主要样式来源继续整理。
规则:
src/styles/globals.css是主样式来源src/index.css只作为视觉回归参考- 若
globals.css缺失,再结合组件现有样式补齐 - 如果页面后续还要重新导出
.fig,需要同时保证导出壳子使用的src/index.css与最终style.css保持一致,至少不能明显漂移
依赖处理
保留需要的运行依赖,默认排除:
reactreact-domnext-themes
如果分析报告里有这些包以外的依赖,按需执行:
pnpm add <依赖名>
主题导入规则
当目标是 themes 时,优先从以下来源提取 token:
DESIGN_SYSTEM_GUIDE.mdTOKEN_REFERENCE.mdsrc/styles/globals.css- 组件里的 CSS 变量和设计语义
期望产物:
src/themes/<theme-key>/globals.css或designToken.jsonsrc/themes/<theme-key>/DESIGN-SPEC.mdsrc/themes/<theme-key>/index.tsx
同时可按需补充:
src/docs/src/database/
验收标准
页面模式:
node scripts/check-app-ready.mjs /prototypes/<page-name>
验收要求:
- 页面正常渲染
- 无控制台错误
- 主视觉与原项目基本一致
- 不再依赖原始 Vite alias 才能运行
主题模式:
- token 文件存在且结构完整
DESIGN-SPEC.md说明清晰- 主题演示入口能体现核心 token 效果
常见注意点
- 不要把
src/index.css直接当最终style.css - 不要继续保留对
package@versionalias 的运行时依赖 - 不要把完整多页面路由壳层原封不动塞进最终页面组件
- 优先利用设计文档和 CSS 变量提取主题,而不是只看视觉截图
- 如果目录内已有
canvas.fig、meta.json、images/等原始资产,转换时不要删除它们 - 如果目录内已有
src/App.tsx/src/index.css作为 Figma 导出壳子,修改根目录页面后要同步更新它们,否则后续导出的.fig会与当前页面不一致