把博客搬到 SvelteKit + Cloudflare
1 min read

这个博客几经重做——从 2020 年的一个 WordPress 站点,一路折腾到现在这套 SvelteKit + Cloudflare 的静态架构。这篇记录最近这次重构的选型:目标很简单——静态、快、好维护,顺便把所有可用的内容组件都演示一遍。
选型
- SvelteKit + adapter-cloudflare:整站预渲染成静态资源,部署到 Cloudflare Workers。
- Markdown + mdsvex:文章就是
.md文件,还能在正文里嵌 Svelte 组件。 - Tailwind v4 + Shiki:设计 token 集中管理,代码块构建期高亮。
核心配置其实就两个文件:
import adapter from '@sveltejs/adapter-cloudflare';
export default {
kit: { adapter: adapter() }
}; {
"name": "atlas",
"main": ".svelte-kit/cloudflare/_worker.js",
"compatibility_date": "2026-05-29"
}一张图看懂构建流程
flowchart LR
A[".md 文章"] --> B["mdsvex"]
B --> C{"代码块?"}
C -->|"普通"| D["Shiki 高亮"]
C -->|"mermaid"| E["客户端渲染 SVG"]
B --> F["预渲染 prerender"]
D --> F
F --> G["Cloudflare Workers"] 用 mermaid 围栏写流程图即可:构建期留占位,客户端按当前明暗主题渲染成 SVG(库按需懒加载,没有图的页面不会引入它)。
写作体验
加一篇文章 = 往 content/articles/ 丢一个 .md,列表、首页、归档、目录全自动更新。
点开看:目录是怎么来的
正文里的 `##` / `###` 标题会被自动抓取生成右侧目录,并用 01/02 编号。这个折叠块就是 Spoiler 组件。
灵感氛围
写代码时的背景音,大概就是这种 lo-fi 的安静:
之后
慢慢把灵感、实验和过去都沉淀进来——少一点魔法,多一点确定性。
// related
开发日志
为什么我放弃了 Next.js Server Actions
聊聊在实际项目中遇到的问题,以及我现在的处理方式。
开发日志
最好的备份,是没有需要备份的东西
2024 年,我把博客弄丢了两次——先是图床,后是数据库。两次我都怪「以后再备份」,可后来想明白,真正该删掉的不是侥幸心理,而是那些需要被备份的状态。
AI / 思考
LLM 是最后手段,不是默认手段
我本来打算把整个项目交给 agent 跑,结果 Codex 的套餐没撑过几个视频就见底了。这篇记一下那之后我是怎么一处一处把 LLM 从流水线里请下神坛,退回到无聊的死代码——以及我至今不敢确定,这到底是工程判断,还是只是我钱包的形状。
yen@harvey:~$ exit 0