psd-component-splitter
Installation
SKILL.md
PSD 组件拆分器
将 PSD 图层结构按第一级分组拆分为多个独立组件文件,支持 React (JSX + CSS Modules) 和 Vue (SFC)。
快速开始
React
py -3 .claude/skills/psd-component-splitter/scripts/split_components.py \
--json layer-tree.json \
--images sliced-images/ \
--out output/ \
--framework react
输出目录:
output/react-split/
Vue
py -3 .claude/skills/psd-component-splitter/scripts/split_components.py \
--json layer-tree.json \
--images sliced-images/ \
--out output/ \
--framework vue
输出目录:
output/vue-split/
前置依赖
# 1. 导出图层切片
py -3 .claude/skills/psd-slicer/scripts/export_slices.py \
design.psd -o sliced-images/
# 2. 生成图层结构 JSON
py -3 .claude/skills/psd-layer-reader/scripts/psd_layers.py \
design.psd -o layer-tree.json
参数说明
| 参数 | 必需 | 说明 |
|---|---|---|
--json |
✅ | JSON 图层树文件路径 |
--images |
✅ | 切片图片目录路径 |
--out |
✅ | 输出目录路径 |
--framework |
✅ | react 或 vue |
--component-name |
❌ | 主组件名称(默认:PsdApp) |
输出结构
脚本会根据框架类型自动在输出目录下创建对应的子目录:
- React:
<out>/react-split/ - Vue:
<out>/vue-split/
React
output/react-split/
├── App.jsx # 主入口组件
├── App.module.css # 全局样式
├── components/ # 组件目录
│ ├── group-header/
│ │ ├── index.jsx
│ │ └── index.module.css
│ └── ...
└── images/ # 图片资源
└── ...
Vue
output/vue-split/
├── App.vue # 主入口组件
├── components/ # 组件目录
│ ├── group-header/
│ │ └── index.vue
│ └── ...
└── images/ # 图片资源
└── ...
工作原理
- 解析 JSON:读取图层树结构
- 识别分组:遍历第一级图层,识别
kind: "group"节点 - 生成组件:将分组名转换为 PascalCase(如
user-card→UserCard) - 创建入口:生成 App.jsx/App.vue 整合所有子组件
- 复制资源:将图片复制到
images/目录
组件特性
React
- CSS Modules 样式隔离
- 支持
className、style、onClickprops - BEM 类名规范
Vue
- 单文件组件(SFC)
- Scoped CSS
- 支持 props 传递
使用建议
✅ 适用场景
- PSD 第一级分组代表不同功能模块
- 需要组件化开发,各模块独立维护
- 团队协作开发
❌ 不适用场景
- PSD 无明确分组结构
- 需要像素级精确的单页预览(使用 psd-json-preview)
- 需要响应式 flexbox 布局(使用 psd-semantic-layout)
故障排查
未找到有效的第一级分组
原因:PSD 结构中没有 kind: "group" 的第一级节点
解决:
- 检查 JSON 结构确认存在分组图层
- 在 PSD 中创建分组后重新导出
组件生成失败
原因:生成器模块未找到或脚本路径错误
解决:
- 确认脚本目录结构完整
- 检查
react_generator.py或vue_generator.py是否存在
图片未复制
原因:图片名称与图层名不匹配
解决:
- 切片时使用
--mapping-json参数 - 检查 JSON 中的
name字段与图片文件名是否一致
相关技能
- psd-layer-reader - 读取 PSD 图层结构为 JSON
- psd-slicer - 导出 PSD 图层为 PNG 图片
- psd-json-preview - 生成 HTML 预览
- psd-semantic-layout - 生成语义化 flexbox 布局
详细文档
完整工作流、实战示例和常见问题,参见 references/WORKFLOW.md。
Related skills
More from xiao0916/lm-skills
psd-slicer
将 Photoshop(.psd)文件的所有图层导出为独立的 PNG 图片。适用于从 PSD 文件提取图层图片、为网页开发生成切片、或为其他工具准备图层资源。自动处理图层命名、跳过不可见图层、递归导出嵌套图层组。
44psd-layer-reader
读取并导出 Photoshop(.psd)图层树为 JSON,包含图层元信息(名称、类型、可见性、bbox)以及详细的文本样式信息。当用户需要分析 PSD 结构、查找特定图层(如弹窗、按钮)、或准备 HTML/CSS 还原所需的数据时,务必使用此技能。即使涉及复杂的嵌套结构或需要精确的文本还原(字体、颜色、间距),此工具也能提供结构化的支撑。
35psd-to-preview
从 PSD 设计文件到预览页面 + React 组件 + Vue 组件的完整转换工作流。
12psd-json-preview
从 PSD 导出的 JSON 图层树和切片图片生成 HTML/CSS 预览。默认保留 PSD 的分组嵌套结构,用 --flatten 参数可切换为平铺模式。
6venv-manager
自动管理 Python 虚拟环境。当其他技能需要隔离的 Python 环境时,本技能帮助 AI 创建、激活和管理虚拟环境,确保依赖不冲突。
3ocr-recognition
|
3