MyLife 百科 我的生活 · 服务器专属百科

本站构建说明

生成器、目录结构、页面格式与发布流程。

一句话

本站是静态站点:Markdown + YAML 经生成器编译成一堆 HTML, 服务器上只有 nginx 静态文件,没有 PHP、没有数据库。

目录结构

site/
├── build.py              # 生成器(唯一入口)
├── data/
│   ├── nav.yml           # 页面树(唯一真源)
│   └── items.yml         # 预留:物品数据(后续从插件配置导出)
├── templates/layout.html # 页面模板
├── assets/               # style.css / wiki.js / logo.svg
└── content/              # 正文,路径即 URL
    ├── index.md          → /
    ├── servers/scn.md    → /servers/scn/
    └── items/miyu/chen-feng-bang.md → /items/miyu/chen-feng-bang/

构建

cd site
python3 build.py            # 产物在 ../dist
python3 build.py --report   # 额外打印待填充页与红链清单

依赖:Python 3.14 + PyYAML + Jinja2(构建机已具备,无需 pip 安装)。

页面树是唯一真源

data/nav.yml 里出现的每个 path 都会生成页面:

  • content/<path>.md 存在 → 渲染正文;
  • 不存在 → 自动生成「待填充」占位页,并把 nav.yml 里写的 sections 章节列成清单。

所以加页面只改 nav.yml,导航、面包屑、搜索索引全部自动跟上,不会出现手工漏登记。

合成表数据管线

合成表页不是手写的,由数据管线生成:

python3 tools/gen_recipes.py     # 线上 EcoItems 配置 → data/recipes.yml + 重写 nav.yml 的合成表段
python3 build.py                 # 渲染成一个个配方页
  • 输入:../data-raw/(只读抓取的 craftable: true 物品配置、物品名映射、原版官方 zh_cn.json);
  • 输出:data/recipes.yml(44 条配方数据集)+ data/nav.yml 里带 GENERATED:RECIPES 标记的一段;
  • 配方页由 build.py 按 recipe_id 渲染(信息框 + 3×3 网格 + 材料清单 + 配置提示);
  • 想在某个配方页加额外说明,就在 content/recipes/<slug>.md 写正文,会追加在生成内容后面;
  • 配置改动后重跑这两条命令即可同步,不要手改生成出来的页面。

常用标记语法

写法效果
[[items/miyu/chen-feng-bang]]站内链接(自动解析成 URL,缺失则标红)
[[path|显示文字]]带显示文字的站内链接
:::note 标题 … :::提示框(还有 tip/warning/danger/info)
| 列1 | 列2 |表格
# ~ ######标题(自动生成锚点与右侧目录)
直接写 HTML原样输出,用来排卡片、画廊

数据字段

front matter 里可用的结构化字段:

字段用途
title / summary / tags页面标题、摘要、标签
infobox右侧信息框(rows / groups / image / subtitle)
item.effects词条列表,渲染成带颜色的效果块
recipe.grid + recipe.result合成配方,渲染成 3×3 工作台网格
tooltip站内链接悬停提示(不写则用 infobox 自动拼)

发布流程

本地产出 dist/ → 打包 → 走 /srv/web/bin/30-deploy.sh wiki <版本> <源码目录> → 切 current 软链 → reload nginx。回滚用 40-rollback.sh wiki。详见运维台账。

运维开发