Files
sproutblog/README.md
2026-06-24 22:10:27 +08:00

2.2 KiB
Raw Permalink Blame History

SproutBlog

Cloudflare Worker + D1 + 静态资源Vite/React SPA。Worker 仅处理 /api/*,前端构建产物输出到 dist/,由 [assets] 提供;wrangler deploy 一次部署 API + 前端。

功能

  • 公共博客React + React Router
  • Markdownmarked + KaTeX + highlight.js + Mermaid按需动态加载
  • 简单后台 CRUDCookie / Basic Auth 与原先一致)
  • 评论cwd-widget
  • 手机与桌面适配(沿用原样式)

初始化

  1. 创建 D1wrangler 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需已有 distnpm 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 设置后台 Cookiebody: { 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