






















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

喜欢的小伙伴,欢迎来个 🌟Star、👍点赞?
Pagefind,按需加载)👋️ 用户资产主要在 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 主要用于改显示名称和描述。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。