ad8997a5ec7a4acb518a9bba91537d17fdaff2c4
SproutBlog
Cloudflare Worker + D1 + 静态资源(Vite/React SPA)。Worker 仅处理 /api/*,前端构建产物输出到 dist/,由 [assets] 提供;wrangler deploy 一次部署 API + 前端。
功能
- 公共博客(React + React Router)
- Markdown(marked + KaTeX + highlight.js + Mermaid,按需动态加载)
- 简单后台 CRUD(Cookie / Basic Auth 与原先一致)
- 评论(cwd-widget)
- 手机与桌面适配(沿用原样式)
初始化
- 创建 D1:
wrangler d1 create sproutblog,把database_id写入wrangler.toml。 - 应用迁移:
wrangler d1 migrations apply sproutblog --remote - 安装依赖:
npm install
开发
- 一体化(会先
vite build再同时拉起 Worker 与前端开发服务器):npm run dev- Worker:默认
http://127.0.0.1:8787(读取dist静态资源) - 前端:
http://127.0.0.1:5173,/api代理到8787
- 仅 Worker(需已有
dist):npm run dev:worker - 仅前端 + API 代理:
npm run dev:client - 修改 React 后若要在
8787上看到最新静态文件,请再执行npm run build。
部署
npm run deploy
等同 npm run build && wrangler deploy。
环境变量
SITE_TITLE/SITE_TITLE_EN/CWD_API_BASE:可在wrangler.toml的[vars]中配置。ADMIN_PASSWORD:生产环境建议使用wrangler secret put ADMIN_PASSWORD,勿提交仓库。- 前端可选:
VITE_CWD_SITE_ID(构建时注入;否则以/api/config中的CWD_SITE_ID为准)。
API 说明(节选)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/config |
站点公开配置 |
| POST | /api/admin/session |
设置后台 Cookie(body: { token }) |
| GET | /api/posts |
列表;未登录仅返回已发布文章 |
| GET | /api/posts/:idOrSlug?bump=1 |
详情;bump=1 且匿名访问已发布文章时增加浏览量 |
| POST/PUT/DELETE | /api/posts … |
写操作需鉴权(与原先一致) |
目录结构(节选)
src/worker— Worker 入口src/api— 路由与 HTTP 处理src/db— D1 访问client/— Vite + React 源码,构建至dist/migrations/— D1 SQL
Description
Languages
JavaScript
95.5%
TypeScript
3.3%
CSS
1.1%
HTML
0.1%