sloth-d2c-figma-plugin 2.0.3-beta48 → 2.0.3-beta51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,108 +1,156 @@
1
- # Figma Plugin Sample React Hot Reload
1
+ # Sloth D2C Figma 插件
2
2
 
3
- 支持 React(部分)热更新的 Figma 插件 demo
3
+ > 设计稿转代码工具 - Figma 插件
4
4
 
5
- ## 功能介绍
5
+ ## 📖 简介
6
6
 
7
- 这个 Demo 用于开发 Figma 插件,支持了如下的功能:
7
+ Sloth D2C 设计稿转代码插件,面向前端开发与设计团队的智能化工具,支持设计稿快速转生产级HTML/React代码,及文本/图片+Prompt输入AI生成目标风格页面并转译至Figma节点。
8
8
 
9
- - [x] React
10
- - [x] Webpack
11
- - [x] WebpackDevServer
12
- - [x] React Hot Reload
13
- - [x] React Router
14
- - [x] React Hooks
15
- - [x] 便捷的消息通信机制
9
+ ### 核心能力
16
10
 
17
- 更多关于此仓库的介绍,请移步到我的博客文章 [Figma 插件开发浅浅谈](https://banyudu.com/posts/figma-plugin-development-intro.f7472f?v=OKGW6q)。
11
+ 高保真还原,样式布局精准匹配设计稿,降低编码与走查成本;
18
12
 
19
- ## 使用说明
13
+ 代码贴近人工编写,支持TailwindCSS、Flex自动布局、行列分组等技术特性;
20
14
 
21
- ### 安装依赖
15
+ 支持生成代码在线二次编辑(图片编组、源码调整等);
22
16
 
23
- ```bash
24
- npm install
25
- ```
17
+ ④ 深度协同Sloth D2C MCP,通过配置拦截及数据推送突破RESTful API限制,最大化还原度。
26
18
 
27
- ### 启动调试
19
+ ## 🚀 安装
28
20
 
29
- ```bash
30
- npm run dev
31
- ```
21
+ ### 方式一:从 Figma 社区安装(推荐)
22
+
23
+ 1. 访问 [Figma 社区页面](https://www.figma.com/community/plugin/1497969094291954974/sloth-d2c)
24
+ 2. 点击 "Install" 安装插件
25
+ 3. 在 Figma 中打开任意设计稿,通过 `Plugins` 菜单找到 "Sloth D2C 设计稿转代码"
26
+
27
+ ### 方式二:本地开发安装
28
+
29
+ 1. 克隆项目并安装依赖:
32
30
 
33
- 调试/打包为Figma插件
34
31
  ```bash
35
- pnpm build
36
- pnpm dev
32
+ # 克隆项目
33
+ git clone <repository-url>
34
+ cd ai/apps/figma
35
+
36
+ # 安装依赖(需要在根目录执行)
37
+ cd ../..
38
+ pnpm install
37
39
  ```
38
40
 
39
- 调试/打包为node依赖
41
+ 2. 构建插件:
42
+
40
43
  ```bash
41
- pnpm dev:lib:node
42
- pnpm build:lib:node
44
+ # 开发模式(支持热更新)
45
+ pnpm dev:figma
46
+
47
+ # 生产构建
48
+ pnpm build:figma
43
49
  ```
44
50
 
45
- ### 功能开发
51
+ 3. 在 Figma 中加载本地插件:
52
+ - 打开 Figma Desktop 应用
53
+ - 进入 `Plugins` → `Development` → `Import plugin from manifest`
54
+ - 选择 `apps/figma/manifest.json` 文件
46
55
 
47
- #### 目录约定
56
+ ## 💡 快速开始
48
57
 
49
- 功能开发主要需要修改两处位置。
58
+ ### 基础使用流程
50
59
 
51
- - src/figma: 存储 Figma 沙箱中运行的代码,不可以使用 window / fetch 等各种 api,但是可以访问 figma 文档结构。
52
- - src/pages: React 开发的页面,和 create-react-app 创建的项目差别不大,可以正常使用 react-router (只能是 memory router) 和 antd 组件库等常用库。
60
+ 1. **打开插件**
61
+ - Figma 中选择需要转换的设计稿或图层
62
+ - 通过 `Plugins` 菜单启动 "Sloth D2C 设计稿转代码"
53
63
 
54
- #### 内部通信
64
+ 2. **选择元素**
65
+ - 插件会自动识别当前选中的图层
66
+ - 也可以手动框选需要转换的区域
55
67
 
56
- pages 和 figma 中需要通信时,需要用到 postMessage 在两个窗口间通信,比较繁琐。
68
+ 3. **配置转换选项**
69
+ - 选择目标代码框架(HTML/Vue/React 等)
70
+ - 配置样式处理方式
71
+ - 设置资源处理策略
57
72
 
58
- 我提取了一个帮助工具 `emitToFigma`,可以用于在 pages 中发消息给 figma,并获得其响应。
73
+ 4. **生成代码**
74
+ - 点击生成按钮,AI 将智能分析设计稿
75
+ - 实时预览生成的代码效果
76
+ - 一键复制或导出代码
59
77
 
60
- 使用方法:
78
+ ## 🛠️ 开发指南
61
79
 
62
- 首先,在 src/figma 中定义 actions,参见 `src/figma/index.ts`
80
+ ### 项目结构
63
81
 
64
- ```typescript
65
- // 如果添加了新的文件,需要在上面导入,并在actions中加上相应的变量名
66
- const actions: Record<string, Record<string, FigmaMessageHandler>> = {
67
- storage,
68
- page,
69
- }
82
+ ```
83
+ apps/figma/
84
+ ├── src/
85
+ │ ├── code.ts # 插件主入口
86
+ │ ├── ui.tsx # UI 界面入口
87
+ │ ├── ui.html # UI HTML 模板
88
+ │ ├── types.ts # 类型定义
89
+ │ ├── figma/ # Figma 相关逻辑
90
+ │ │ ├── index.ts # Figma 逻辑入口
91
+ │ │ ├── main.ts # 主流程控制
92
+ │ │ ├── layer.ts # 图层处理
93
+ │ │ ├── node.ts # 节点操作
94
+ │ │ ├── storage.ts # 本地存储
95
+ │ │ ├── event.ts # 事件系统
96
+ │ │ └── core/ # 核心算法
97
+ │ │ ├── core.ts # 核心转换逻辑
98
+ │ │ ├── convert.ts # 元素转换
99
+ │ │ ├── extract-style.ts # 样式提取
100
+ │ │ ├── filter-blank.ts # 空白节点过滤
101
+ │ │ ├── text-style.ts # 文本样式处理
102
+ │ │ └── util.ts # 工具函数
103
+ │ └── utils/ # 工具函数
104
+ ├── manifest.json # 插件配置文件
105
+ ├── package.json
106
+ ├── webpack.config.js # Webpack 配置
107
+ ├── webpack.cjs.config.js # CommonJS 构建配置
108
+ └── tsconfig.json
109
+
110
+ 依赖共享包:
111
+ ├── @sloth-d2c/web # 核心转码库
112
+ ├── @sloth-d2c/history # 历史记录管理
113
+ └── @sloth-d2c/shared-types # 类型定义
70
114
  ```
71
115
 
72
- 然后在相应的文件,如 `src/figma/storage` 中定义方法,如 `get`
73
-
74
- 之后在 `src/pages` 中的任何位置,可以通过 `await emitToFigma('storage.get', params)` 的方式调用此方法并获取响应值。
75
-
76
- ### 打包发布
116
+ ### 本地开发
77
117
 
78
- 执行命令
118
+ 1. **启动开发模式**
79
119
 
80
120
  ```bash
81
- npm run pack
82
- ```
121
+ # 在项目根目录
122
+ pnpm dev:figma
83
123
 
84
- 它会在 `dist` 目录中生成一个可供生产环境使用的 `ui.html`、`ui.js`、`code.js` 文件。
124
+ # 或只启动插件开发
125
+ cd apps/figma
126
+ pnpm dev:plugin
85
127
 
86
- 然后将 `manifest.json` 等必要的文件与 `dist` 目录一起打包成 `figma-plugin.zip` 文件。
87
-
88
- 之后可以内部分享 `figma-plugin.zip` 文件给其他人(无需发布到市场,但需要用开发者模式导入),或者直接发布到 Figma 插件市场。
89
-
90
- ## 避坑指南
128
+ # 同时启动 Web 开发服务器(用于调试 UI)
129
+ pnpm dev:web
130
+ ```
91
131
 
92
- Figma 插件,受限于其运行时环境,和普通的前端开发略有不同。
132
+ 2. **热更新**
93
133
 
94
- 主要的区别是有些 API 或者库不再可用,列举如下:
134
+ 开发模式下,修改代码会自动重新构建。在 Figma 中需要手动重新运行插件以加载最新代码。
95
135
 
96
- ### 沙箱环境中的代码可以访问 Figma,不能访问 window 等全局变量和 api
136
+ 3. **调试技巧**
97
137
 
98
- `src/figma` 中的代码,运行在沙箱环境中,基本上只能用 Figma 的 api,无法使用大部分的 window / fetch 等 api.
138
+ ```typescript
139
+ // 在插件代码中使用 console.log
140
+ console.log('Debug info:', data)
99
141
 
100
- ### Iframe 中的代码,可以访问 window / fetch 等常见的前端全局变量和 API,但略有不同
142
+ // UI 代码中,日志会显示在浏览器控制台
143
+ // Figma Desktop: 右键插件窗口 → Inspect
144
+ ```
101
145
 
102
- `src/pages` 中的代码,运行在 iframe 之中,但是它的 src 并不是一个远程地址(也没有 localhost 地址可用),而是一段 dataurl,形如 `data:text/html;base64,` 这样的地址。
146
+ ### 构建和打包
103
147
 
104
- 这就导致它不能正常使用 `BrowserRouter` 中的前进后退等能力,无法使用 `<a>` 标签进行页面导航,而只能使用 `MemoryRouter` 和 `history.push` 这样的内存路由进行页面导航。
148
+ ```bash
149
+ # 构建
150
+ pnpm build
105
151
 
106
- 同时也会导致它不能正常使用 `localStorage` 等存储类的 api,而必须借助 `src/figma` 中的 `figma.clientStorage.getAsync` `figma.clientStorage.setAsync` 等方法进行数据持久化存储。
152
+ # Node.js 库构建(用于 MCP 服务)
153
+ pnpm build:lib:node
154
+ ```
107
155
 
108
- 更多原理介绍,请移步到我的博客文章 [Figma 插件开发浅浅谈](https://banyudu.com/posts/figma-plugin-development-intro.f7472f?v=OKGW6q)。
156
+ **Sloth D2C Figma 插件** - 让设计稿转代码变得简单高效 🚀