80 lines
2.7 KiB
Markdown
80 lines
2.7 KiB
Markdown
# 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. 初始化本地数据库
|
|
|
|
本项目在本地开发时依赖 Wrangler 模拟 D1 数据库环境。请运行以下命令初始化数据库表和测试数据:
|
|
|
|
```bash
|
|
pnpm dlx wrangler d1 execute blogflare-db --local --file=./schema.sql
|
|
```
|
|
|
|
如果你已经初始化过数据库,请不要重新执行会重建表的 `schema.sql`,而应应用增量迁移:
|
|
|
|
```bash
|
|
pnpm exec wrangler d1 migrations apply blogflare-db --local
|
|
```
|
|
|
|
部署新版本前,再将同一批迁移应用到远端数据库:
|
|
|
|
```bash
|
|
pnpm exec wrangler d1 migrations apply blogflare-db --remote
|
|
```
|
|
|
|
### 3. 启动本地开发服务器
|
|
|
|
```bash
|
|
pnpm run dev
|
|
|
|
# 或者启动服务器并在浏览器中自动打开
|
|
pnpm run dev -- --open
|
|
```
|
|
|
|
## 📦 构建与部署
|
|
|
|
### 构建项目
|
|
|
|
```bash
|
|
pnpm run build
|
|
```
|
|
|
|
你可以使用 `pnpm run preview` 来预览生成的生产版本构建。
|
|
|
|
### 部署到 Cloudflare
|
|
|
|
项目已经配置了 `@sveltejs/adapter-cloudflare`,可以通过连接 GitHub/GitLab 仓库到 Cloudflare Pages 实现自动构建部署,或者使用 Wrangler CLI 进行手动发布:
|
|
|
|
```bash
|
|
pnpm dlx 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`, `dompurify`, `mdsvex`
|