60 lines
2.2 KiB
Markdown
60 lines
2.2 KiB
Markdown
# 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
|