Repository navigation
Theme Packaging
worable edited this page Oct 12, 2026
·
1 revision
在主题目录内执行打包命令:
cd my-theme
zip -r my-theme-1.0.0.zip \
theme.json \
theme.css \
assets/ \
frontend/ \
signature.json未用到条目可以从命令中删掉:没有静态资源时去掉 assets/,主题未签名时去掉 signature.json。
my-theme-1.0.0.zip
├── theme.json # 必须
├── theme.css # 必须
├── assets/ # 可选
├── frontend/ # 可选
│ ├── manifest.json
│ └── dist/
└── signature.json # 可选
上传 ZIP 时,内核执行以下校验:
| 规则 | 限制 |
|---|---|
| 最大文件数 | 128 |
| 单文件最大 | 1 MB |
| 解压总大小 | 8 MB |
| 禁止可执行文件 |
.js/.ts/.mjs/.cjs/.jsx/.tsx(frontend/dist/*.js 除外) |
| 禁止隐藏文件 |
.git*、.htaccess
|
| 路径安全 | 禁止 ..、绝对路径 |
| ID 格式 | /^[a-z0-9_-]{1,64}$/ |
| 保留 ID |
default 不可使用 |
| CSS 校验 | 只允许 :root/.dark Token 声明 |
| CSS 大小 | ≤64 KB |
主题签名与插件签名使用相同的 Ed25519 机制,详见插件打包与签名。
管理后台:访问 /admin/themes,点击上传按钮选择 ZIP 文件。
API:
curl -X POST http://127.0.0.1:3001/admin/themes \
-H "Authorization: Bearer <token>" \
-F "file=@my-theme-1.0.0.zip"管理后台:/admin/themes → 点击激活。
API:
curl -X PATCH http://127.0.0.1:3001/admin/themes/my-theme \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"active":true}'激活新主题时,旧主题自动取消激活。同一时刻只有一个主题为 active。
预览不需要激活,不影响线上:
# 设置预览
curl -X POST http://127.0.0.1:3001/admin/themes/preview \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"themeId":"my-theme"}'
# 退出预览
curl -X DELETE http://127.0.0.1:3001/admin/themes/preview \
-H "Authorization: Bearer <token>"前端通过 GET /preview?theme=<id>&path=<path> 预览任意页面。
curl -X DELETE http://127.0.0.1:3001/admin/themes/my-theme \
-H "Authorization: Bearer <token>"default 主题不可删除,当前激活的主题也不可删除(返回 400)。删除前需先激活另一个主题。
核心开发
插件开发
主题开发
前端包开发
RESTful API