Minecraft 服务器知识平台 — 从零开服指南、服务端教程、插件资料与配置说明。
通过 GitHub Pages 自动部署。推送代码到 master 分支后,Actions 会自动构建并上线。
- Vue 3 + Vite(单页应用,Hash 路由兼容 GitHub Pages)
- 无第三方依赖:Markdown / YAML frontmatter 解析器均为轻量手写子集
- 渲染前会转义原始 HTML,链接限制为安全协议
- GitHub Actions 自动部署
npm install
npm run dev # http://localhost:5173;启动前会自动 validate + build:index
npm run build # 构建到 dist/;同样先校验与生成索引
npm run validate # 仅校验 content/ 下所有 frontmatter
npm run build:index # 仅从 content/ 聚合生成 data/*.jsonnpm run dev 与 npm run build 都会先跑 validate(schema + 命名 + 引用一致性)和 build:index(从 markdown frontmatter 生成 JSON 索引)。任何校验失败都会阻断 dev / build。
MCHive 同时维护开服指南与插件资料。所有内容都以 Markdown 形式存放在 content/,元数据写在每个 md 文件顶部的 YAML frontmatter 里。不再需要手抄 JSON 索引,启动 / 构建时由脚本自动聚合。
content/
├── guides/<id>.md # 开服教程(每个 md 顶部带 frontmatter)
└── plugins/
├── <id>/ # 每个插件一个目录
│ ├── tutorial.md # 必填;含 frontmatter 元数据 + 教程正文
│ ├── lang.md # 可选;展示为代码块
│ └── config.md # 可选;展示为代码块
└── _template/ # 贡献模板(贡献时复制整个目录)
只需新增一个目录并写好 frontmatter,无需修改任何 JSON 或前端代码:
- 复制模板:把
content/plugins/_template/整个目录复制一份,重命名为你的插件 id(必须与目录名一致、只含a-z 0-9 -)。 - 改 frontmatter:在新的
tutorial.md顶部---块里填:id— 必须等于目录名name/description— 必填,用于卡片与搜索category— 左侧分组;已有「基础工具」;新增分类会自动建分组tags/version— 可选,搜索关键字与版本区间sections— 可省略;省略时自动扫描本目录下所有.md(tutorial.md走 markdown 渲染,其余走代码块)downloads— 列出可下载文件路径,文件必须放在public/downloads/plugins/<id>/下
- 写正文:
tutorial.md写 Markdown 教程正文;lang.md/config.md粘贴 YML 或 properties 等「纯文本文件」原文(页面会自动以代码块渲染,可一键复制)。 - 放置下载文件(可选):如果有可下载的 YML 等,放到
public/downloads/plugins/<id>/。 - 跑起来:
npm run dev— predev 钩子会自动校验 frontmatter 与引用一致性,发现错误立刻报错;通过后再生成data/plugins.json,无需手动维护。
直接新建 content/guides/<id>.md(id 即文件名去后缀),顶部 frontmatter:
---
id: my-guide
title: 教程展示标题
description: 一句话讲清楚这篇教程解决什么问题
icon: 📖
tags: [标签1, 标签2]
order: 6
---order 控制侧边栏顺序(升序),省略则按文件名字典序。文件下方写 Markdown 正文即可。
完整契约见 schemas/ 目录:
schemas/plugin.schema.json— 插件 frontmatter 必填字段、类型、命名约束schemas/guide.schema.json— 教程 frontmatter 契约schemas/section.schema.json— sections 配置契约
校验器会在 predev / prebuild 钩子中加载这些 schema 阻断违例内容进入构建产物。
完成上述步骤后提交并发起 Pull Request。代码合并后 Actions 会自动部署。
.
├── content/ ← Markdown 内容(唯一真实源)
│ ├── guides/ ← 开服教程
│ └── plugins/ ← 插件资料
│ ├── _template/ ← 贡献模板
│ ├── essentialsx/
│ ├── luckperms/
│ └── worldguard/
├── data/ ← 构建产物(由 build:index 自动生成,可读)
│ ├── plugins.json
│ └── guides.json
├── schemas/ ← JSON Schema 契约
├── scripts/ ← Node 脚本
│ ├── parse-frontmatter.mjs ← 共享 frontmatter 解析(Vue 与脚本共用)
│ ├── build-index.mjs ← 扫描 content/ → data/*.json
│ └── validate-content.mjs ← schema 校验 + 命名/引用一致性
├── public/downloads/plugins/ ← 可下载文件(按 <id> 子目录组织)
├── src/
│ ├── components/ ← Sidebar / DownloadSection
│ ├── views/ ← Home / PluginDetail / GuideDetail / ...
│ ├── composables/
│ │ ├── markdown.js ← Markdown 解析(顶部自动剥离 frontmatter)
│ │ └── frontmatter.js ← YAML 解析器
│ ├── router/index.js
│ ├── styles/main.css
│ ├── App.vue
│ └── main.js
├── .github/workflows/deploy.yml
├── index.html
├── package.json ← scripts: dev/build 串联 validate + build:index
└── vite.config.js ← base: './' 兼容 GitHub Pages
- 在仓库 Settings → Pages → Build and deployment 选择 GitHub Actions
- 如果使用项目路径(
username.github.io/repo)部署而非用户/组织主页,需要修改vite.config.js中的base为'/repo名/'
GPL-3.0