最近又 Vibe Coding 了一个项目,之前心心念念的静态博客~
PS:代码可以烂,界面一定要过得去
项目介绍
🎉 XG-Blog 是一个基于 Astro 的静态博客程序。✍️ 你只需专注写文章「Markdown」,其余的由程序构建生成 ~

喜欢的小伙伴,欢迎来个 🌟Star、👍点赞?
特性一览✨
- ✅ 📝 使用 Markdown 写作,轻松上手~
- ✅ 🏷️ 文章分类 + 标签,内容井井有条
- ✅ 🔍 站内全文搜索(基于
Pagefind,按需加载)
- ✅ 🧭 Banner、菜单等配置自由定制
- ✅ 🔗 友情链接轻松管理
- ✅ 📡 RSS、sitemap 等功能一应俱全
- ✅ 📄 自定义页面,拓展无限可能
- ✅ 💻 代码块高亮显示、复制按钮
- ✅ 🌗 深色 / 浅色主题一键切换
- ✅ 🎨 主题色可自定义,色彩随心
- ⬜ 📃 可视化编辑器(计划中)
- ⬜ 🗨️ 评论系统(已留字段,暂不做开发)
目录结构
👋️ 用户资产主要在 blog/ 目录和 .env 文件,降低维护难度。
./
├─ blog/ # 用户站点内容
│ ├─ posts/ # 用户文章;每篇文章一个文件夹
│ ├─ pages/ # 用户自定义页面;每页一个文件夹
│ ├─ public/ # 用户公开资源;构建后输出到站点根目录
│ ├─ menu.toml # 菜单配置,从 `example/menu.toml` 复制修改
│ ├─ categories.toml # 分类配置,从 `example/categories.toml` 复制修改
│ ├─ tags.toml # 自定义标签,从 `example/tags.toml` 复制修改
│ ├─ links.toml # 友情链接,从 `example/links.toml` 复制修改
│ ├─ banner.toml # banner 配置,从 `example/banner.toml` 复制修改
│ └─ head.toml # 全站 head 注入,从 `example/head.toml` 复制修改
├─ example/ # 模板目录「空内容时的兜底示例」
│ ├─ posts/hello-world/
│ ├─ pages/demo-page/
│ ├─ public/
│ ├─ menu.toml
│ ├─ categories.toml
│ ├─ tags.toml
│ ├─ links.toml
│ ├─ banner.toml
│ └─ head.toml
├─ defaults/public/ # 程序缺省公开资源,不是用户内容模板
│ ├─ favicon.ico
│ └─ default/
│ ├─ default-logo.svg
│ ├─ default-logo-dark.svg
│ ├─ default-user.svg
│ ├─ default-cover.webp
│ └─ default-banner.webp
├─ src/ # Astro 路由、组件、样式和核心逻辑
├─ .env # 用户自定义变量(从.env.example复制)
├─ .env.example # 模板,复制为 .env 后作为用户自定义变量
├─ astro.config.mjs
└─ package.json
.gitkeep 只是占位文件,用来让空目录保留在项目里。写入真实文章、页面或资源后,不需要管它。
如果是新站点,可以把 example/ 复制一份并重命名为 blog/,在 blog/ 里维护自己的内容。
配置顺序
站点基础信息来自环境变量:
- 部署平台或系统环境变量优先。
- 本地开发时复制
.env.example 为 .env,再修改 .env。
- 没有配置时使用代码里的默认值,默认值见下方环境变量表。
.env.example 只是示例文件,程序不会直接把它当作本地配置读取。
内容配置使用 TOML:
| 文件 |
用途 |
使用方式 |
blog/menu.toml |
导航菜单 |
从 example/menu.toml 复制后修改;不存在时使用示例文件 |
blog/categories.toml |
分类显示名和描述 |
从 example/categories.toml 复制后修改;不存在时使用示例文件 |
blog/tags.toml |
标签显示名 |
从 example/tags.toml 复制后修改;不存在时使用示例文件 |
blog/links.toml |
友链数据 |
从 example/links.toml 复制后修改;不存在时使用示例文件 |
blog/banner.toml |
首页 banner |
从 example/banner.toml 复制后修改;不存在时使用示例文件 |
blog/head.toml |
全站 <head> 注入 |
从 example/head.toml 复制后修改;不存在时不注入任何内容 |
除 blog/head.toml 外,blog/*.toml 只要存在,就会完全替换 example/*.toml。分类和标签会先从文章属性区自动收集;TOML 主要用于改显示名称和描述。
这家伙太懒了,什么也没留下。
给楼主投上 1 枚硬币
当前您的硬币余额:0