米图设计 开发文档
这个项目是什么
米图设计(仓库 jinghui/kuaitu-editor)是开源封面/海报设计工具 ikuaitu/vue-fabric-editor(MIT)的本地化改造版:106 套本地中文平台模板 + Strapi 兼容的本地接口 + AI 生图素材面板接入。相比上游(无模板、无后端、需连远程 Strapi 云服务),本项目用一个零依赖的单文件 Node 服务端完整兼容 Strapi 返回结构,实现完全离线可用、私有部署、无水印无导出限制。
技术栈与架构
- 前端:Vue 3 + TypeScript + Vite 4 + ViewUI Plus,画布核心为
fabric5.3.0,pnpm workspace 结构(packages/core即@kuaitu/coreSDK 包)。仓库根的package.json里preinstall强制only-allow pnpm。 - 服务端:
server/目录下一个零依赖 Node 单文件服务,兼容 Strapi 的返回结构,提供模板列表、AI 素材(/api/materials、/ai-img/*反代)、授权中心(/api/hub/*:安装统计/心跳/公告/更新检查)等接口;支持离线部署。 - 模板体系:模板即 JSON 文件,存放在数据目录(默认容器内
/app/data,即TEMPLATE_DIR),丢进去即生效,含预览图。 - AI 体系:AI 生图/修图走用户自配的 OpenAI 兼容接口(默认
https://ai.88531.cn/v1+mimo-v2.6-flash),Key 只存浏览器;出图通过素材面板一键进入编辑器画布。
仓库结构
顶层真实目录及职责:
| 路径 | 说明 |
|---|---|
src/ |
编辑器前端源码(Vue 单页应用) |
packages/ |
pnpm workspace 子包(core 为画布 SDK @kuaitu/core) |
server/ |
零依赖 Node 本地服务端(Strapi 兼容接口 + 授权中心接口) |
data/ |
106 套本地模板及预览图数据 |
public/ |
静态资源 |
index.html / vite.config.ts / tsconfig*.json |
Vite/TS 工程配置 |
.env / .env.development / .env.production / .env.staging |
多环境变量(关键:APP_APIHOST) |
Dockerfile / Dockerfile.kuaitu |
官方版与米图定制版镜像构建 |
docker-compose.yml / docker-compose.cover.yml |
官方与封面工坊版编排 |
nginx.conf / restart.sh |
反向代理与重启脚本 |
README-COVER.md / README-en.md 等 |
多语言/专项说明文档 |
本地开发环境
需要 Node 18–20 与 pnpm 8.4.0(必须 8.x,高版本会依赖不一致):
npm install -g pnpm@8.4.0
pnpm i
pnpm dev # vite serve,见 package.json scripts
关键环境变量:.env.production 中 APP_APIHOST= 必须留空,构建才会走同源本地接口(server/index.js),否则会去连上游云服务 github.kuaitu.cc,本地模板与 AI 素材全部取不到。同文件中 APP_TITLE=米图设计 · 封面工坊 控制标题品牌。
常用 npm scripts(摘自 package.json):pnpm dev(开发)、pnpm build(vite build)、pnpm build:sdk(构建 packages/core)、pnpm preview、pnpm test(core 包测试)。
配置项说明
docker-compose.cover.yml 中真实存在的环境变量:
| 配置键 | 含义 | 默认值 |
|---|---|---|
TEMPLATE_DIR |
模板数据目录(可挂载外部目录替换模板) | /app/data |
COVER_AI |
封面 AI 助手地址,AI 出图直接进编辑器「素材 → AI 生成」 | http://192.168.68.19:8128(按需改) |
VERSION |
当前版本号(版本徽章显示) | 1.0.0 |
HUB_HOST |
授权中心地址(CardAuth,安装统计/在线数/公告/版本推送) | https://auth.88531.cn |
HUB_PROJECT_ID |
授权中心项目 ID | 空 |
HUB_API_KEY |
授权中心 Key(由 restart.sh 动态注入不落盘) |
空 |
不配置 HUB 相关项不影响编辑器使用,只是没有版本徽章、公告和安装统计。
构建与发布
# 源码构建(封面工坊版)
docker compose -f docker-compose.cover.yml up -d --build
compose 使用 Dockerfile.kuaitu 构建镜像 kuaitu-editor:1.0,端口映射 8126:80,server/ 以只读挂载(改接口后 docker restart kuaitu-editor 立即生效,无需重新构建),数据目录以读写方式挂载到宿主(server 仅需写 hub.json 保存授权中心机器码/节流状态)。Dockerfile 已补 canvas 编译依赖并做了分层,源码改动不再重装依赖。
公开镜像渠道:gitea.88531.cn/jinghui/kuaitu-editor:latest 已发布到 Gitea 镜像仓库,免登录可拉取(同步推送 v1.0.0 标签)。
部署方式
# 最快:直接拉镜像
docker run -d --name kuaitu-editor --restart always \
-p 8126:80 -e TEMPLATE_DIR=/app/data \
gitea.88531.cn/jinghui/kuaitu-editor:latest
浏览器打开 http://本机IP:8126 即可;对外提供域名时套一层 nginx 反代并启用 https://。
二次开发要点
- pnpm 版本坑:必须 8.x(工程指定 8.4.0),高版本会依赖不一致,装不上或构建失败先查 pnpm。
- 同源接口坑:任何涉及本地模板/AI 素材取不到的问题,先检查构建时
APP_APIHOST是否留空。 - server 即改即生效:
server/只读挂载,改完重启容器即可,适合快速迭代接口逻辑。 - 模板扩展:模板是 JSON 文件,往数据目录丢文件即可新增,无需改前端代码;注意配套预览图渲染。
- AI 面板:AI 生图/修图的接口地址、Key、模型全在页面内配置(用户自配 Key 模式),未配 Key 时基础功能照常,点 AI 会引导注册;开发自建 AI 服务时保证 OpenAI 兼容即可。
- 品牌化:全站名称、页脚、署名等在源码中已统一为「米图设计」/@实用软技,二开时若要换品牌注意同步模板署名与页脚链接。
相关链接
- Gitea 仓库:http://127.0.0.1:3200/jinghui/kuaitu-editor
- 在线体验:https://mitu.88531.cn
- 上游项目:https://github.com/ikuaitu/vue-fabric-editor(秦少卫及社区贡献者,MIT License)