# 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) - 手机与桌面适配(沿用原样式) ## 初始化 1. 创建 D1:`wrangler d1 create sproutblog`,把 `database_id` 写入 `wrangler.toml`。 2. 应用迁移:`wrangler d1 migrations apply sproutblog --remote` 3. 安装依赖:`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`。 ## 部署 ```bash 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