Files
seahi 3344072a9a
continuous-integration/drone/push Build is passing
docs: 在 README 中添加构建状态徽章
2026-08-07 14:03:34 +08:00

100 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# BlogFlare
[![Build Status](https://drone.seahi.me/api/badges/seahi/blogflare/status.svg)](https://drone.seahi.me/seahi/blogflare)
BlogFlare 是一个基于 **SvelteKit** 和 **Cloudflare D1** 构建的现代化、轻量级博客系统。它的设计灵感来源于 Typecho 的经典主题 VOID,旨在提供极速的访问体验和极低的托管成本。
## ✨ 特性
- ⚡️ **极速体验**: 采用 SvelteKit 框架,提供极致的页面加载速度和流畅的交互体验。
- ☁️ **边缘计算架构**: 完全依托于 Cloudflare 强大的全球网络。使用 Cloudflare Pages 进行前端托管,D1 数据库进行数据存储,实现真正的零运维与超低成本。
- 📝 **强大的 Markdown 支持**: 内置 Markdown 渲染引擎(结合了 `marked` 和 `highlight.js` 等),并支持代码高亮与 DoIt 风格的提示块(Admonition)。
- 🎨 **优雅的设计**: 界面灵感源自广受好评的 VOID 主题,排版舒适,注重纯粹的阅读体验。
- 🏷️ **完善的内容管理**: 包含文章发布、标签系统及用户认证的基础数据结构支持。
## 🚀 快速开始
> [!IMPORTANT]
> 本项目强制使用 `pnpm` 作为包管理器,请勿使用 `npm` 或 `yarn`。
### 1. 克隆项目与安装依赖
```bash
git clone git@git.seahi.me:seahi/blogflare.git
cd blogflare
pnpm install
```
### 2. 初始化与同步数据库迁移
本项目全面采用 Cloudflare D1 规范化迁移链体系。不管是初次安装还是升级扩展,只需应用增量迁移(`0000_initial.sql`、`0001_add_series.sql` 等)即可自动实现幂等同步:
`0000_initial.sql` 同时兼容空数据库和旧版 `schema.sql` 已初始化的数据库。生产升级前仍应先创建 D1 备份;不要再对生产库执行已移除的破坏性 `schema.sql`。
#### 本地开发环境同步:
```bash
pnpm run db:migrate:local
# 或直接运行 wrangler: pnpm exec wrangler d1 migrations apply blogflare-db --local
```
如果需要强制清空本地开发数据库并重新从初始状态加载迁移数据,可以运行:
```bash
pnpm run db:reset:local
```
#### 部署与生产远端库同步:
部署更新或正式发布之前,请将完整的迁移链条应用到云端 D1 远端数据库中:
```bash
pnpm run db:migrate:remote
# 或直接运行 wrangler: pnpm exec wrangler d1 migrations apply blogflare-db --remote
```
### 3. 启动本地开发服务器
```bash
pnpm run dev
# 或者启动服务器并在浏览器中自动打开
pnpm run dev -- --open
```
### 4. 配置后台认证
生产环境的 `/admin` 路由强制验证 Cloudflare Access JWT。以下两个值已作为普通环境变量保存在 `wrangler.jsonc`,并在 Pages 部署时自动同步;它们是 Access 登录跳转和 JWT 中公开的校验标识,不是账号密码或访问凭证:
- `CF_ACCESS_TEAM_DOMAIN`:`https://hisland.cloudflareaccess.com`
- `CF_ACCESS_AUD`:保护 `manual.seahi.me` 的 Access Application Audience (AUD) Tag
本地生产预览也会读取 `wrangler.jsonc` 中的值;开发服务器保留仅限 `dev` 模式的本地认证旁路。Gitea 不再需要配置同名 Secrets。
## 📦 构建与部署
### 构建项目
```bash
pnpm run build
```
你可以使用 `pnpm run preview` 来预览生成的生产版本构建。
### 部署到 Cloudflare
项目已经配置了 `@sveltejs/adapter-cloudflare`,可以通过连接 GitHub/GitLab 仓库到 Cloudflare Pages 实现自动构建部署,或者使用 Wrangler CLI 进行手动发布:
```bash
pnpm exec wrangler pages deploy .svelte-kit/cloudflare
```
_(注意:正式部署前请确保在 Cloudflare 仪表盘中创建了对应的 D1 数据库,并绑定到项目中)_
## 🛠️ 核心技术栈
- [SvelteKit](https://kit.svelte.dev/)
- [Cloudflare Pages](https://pages.cloudflare.com/) & [Cloudflare D1](https://developers.cloudflare.com/d1/)
- [Vite](https://vitejs.dev/)
- Markdown 解析与净化: `marked`, `highlight.js`, `sanitize-html`, `mdsvex`