一个基于 Astro 的双语(中文 / English)个人博客主题。
- 🌗 浅色 / 深色主题,跟随系统或手动切换
- 🌍 中英双语(
zh-cn/en),/en前缀路由 - 🏠 首页:随机背景图、打字机一言、社交图标、最新文章
- 📝 博客:分类、更新日期、字数统计、封面图、目录(桌面侧栏 + 移动端抽屉)
- 🔗 友链页:分组展示 + 申请友链说明(自定义
{copy}复制、:tip悬浮提示语法) - 💬 评论:内置 Twikoo 集成,留空
envId即关闭 - 📡 RSS 订阅(按语言独立输出)+ Sitemap
- ⚡ 无框架依赖的轻量交互(anime.js 转场、View Transitions、CSS-only 动效)
- 🔤 内置字体:Alimama FangYuanTi VF(标题)、JetBrains Mono(代码)、Atkinson(正文)、Douyin Sans(分组标题)
pnpm install
pnpm dev # http://localhost:4321
pnpm build # 构建到 ./dist/
pnpm preview # 本地预览构建产物需要 Node.js ≥ 22.12。
| 文件 | 说明 |
|---|---|
src/config.ts |
站点身份:作者名、站点标题/描述/关键词、社交链接、首页一言、Twikoo 评论配置 |
src/lib/feed.ts |
友链数据(分组 + 条目),按语言提供,缺省回退 zh-cn |
src/i18n/ui.ts |
界面文案(导航、错误页、通用提示等) |
src/content/link/apply-zh.md / apply-en.md |
友链页"申请友链"要求 |
public/favicon.png / public/apple-touch-icon.png |
站点图标 |
src/assets/avatar.jpg |
头像(首页 hero 与导航栏共用) |
public/bg/ |
首页随机背景图(mobile/、desktop/,支持 _light/_dark 命名对,来源署名写入 src/bg-credits.json) |
astro.config.mjs |
站点 URL(site)、i18n、Markdown 处理、字体 |
在 src/content/blog/ 下按语言创建 Markdown/MDX 文章:
src/content/blog/
└── zh-cn/
└── 2026/08/01/my-first-post.md # 中文文章
Frontmatter 字段:
---
title: 文章标题
description: 文章描述
pubDate: 2026-08-01
updatedDate: 2026-08-02 # 可选
category: 技术 # 可选,列表页展示
heroImage: ./images/cover.png # 可选,封面图(文章内 relative 路径)
license: true # 可选,默认 true,显示 CC 许可
---自定义语法(全站统一经过 src/remark/index.ts 处理):
`code`{copy}— 行内代码旁渲染复制按钮:tip[文本]{tip="提示"}— CSS 悬浮提示
代码块自动包装为带语言头、行号、复制按钮的组件,无需额外标记。
| 命令 | 说明 |
|---|---|
pnpm dev |
启动开发服务器 localhost:4321 |
pnpm check |
Astro 类型检查(astro check) |
pnpm lint |
ESLint 检查 |
pnpm build |
构建生产产物到 ./dist/ |
pnpm preview |
本地预览构建产物 |
pnpm astro ... |
运行 Astro CLI 命令 |
主题同时内置 Cloudflare Pages 与 Vercel 部署配置,均可直接在对应 Dashboard 连接 Git 仓库后使用。
仓库内置 wrangler.toml、public/_headers、public/_redirects:
| 文件 | 说明 |
|---|---|
wrangler.toml |
Wrangler 部署配置(声明 pages_build_output_dir = "dist") |
public/_headers |
自定义响应头(/_astro/* 不可变长缓存、/bg/* 短缓存) |
public/_redirects |
/en/* 未匹配路径回退到英文 404 页 |
Dashboard 部署
- 在 Cloudflare Dashboard 创建 Pages 项目并连接 Git 仓库
- 构建命令:
pnpm build;构建输出目录:dist - 添加环境变量
NODE_VERSION = "22"(项目要求 Node.js ≥ 22.12)
Wrangler CLI 部署
pnpm install
pnpm build
wrangler pages deploy # 读取 wrangler.toml 的 pages_build_output_dir仓库内置 vercel.json(构建命令 pnpm build、输出目录 dist、/_astro 与 /bg 缺失资源短缓存 404、/en/* 回退英文 404 页)。
Dashboard 部署
- 在 Vercel 导入 Git 仓库(框架预设自动识别 Astro)
- 构建命令与输出目录由
vercel.json自动读取,无需额外配置
CLI 部署
pnpm install
pnpm build
vercel --prod提示:
astro.config.mjs构建时会为文本资源生成.gz/.br预压缩副本, 这是为 nginx 等静态服务器准备的;Cloudflare Pages 与 Vercel 均在边缘自行压缩, 这些副本不会被使用但保留无副作用。
主题代码采用 MIT License。内置字体遵循各自许可(见 src/assets/fonts/ 下对应 LICENSE 文件)。使用本主题发布的站点内容版权归作者本人所有。