本篇介绍写作层面的规范:文章放在哪里、怎么命名、Frontmatter 怎么写、图片放哪里。正文里能调用哪些站点能力(卡片列表、应用卡片、图片画廊、地图点位关联等)见姊妹篇站点功能说明;通过什么渠道把文章交给我们,见贡献方式。
文章放在哪里
正文都放在 docs/ 下带编号的目录里,编号决定侧栏、分类页与标签页的顺序(见排序规则)。按内容类型对号入座:
| 内容类型 | 放到 |
|---|---|
| 入学手续、报到、军训、交通、反诈防骗 | docs/01.新生入学/ |
| 学分绩点、选课、考试、推免保研、竞赛证书 | docs/02.浅谈学习/ |
| 兴趣群、老乡群、学生组织、实验室汇总 | docs/03.群汇总/ |
| 单个社团/组织的详细介绍页 | docs/03.群汇总/05.组织详情/ |
| 快递外卖、美食、周边、APP、校园建筑等日常 | docs/04.校园生活/(下设日常生活、学校系统、校园建筑等子分类) |
| Markdown、Git、编程、AI 等工具类内容 | docs/05.计算机知识/ |
| 本站协作说明、关于我们、友情链接 | docs/10.贡献与其他/ |
| 首页「活动」栏的活动信息 | docs/activity/(不生成独立页面) |
几个约定:
- 不要新建顶层编号目录。想加新大类,先在群里或 Issue 里提一句,多数内容能并入现有分类。
- 目录下可以再建子目录形成子分类(如
04.校园生活/08.校园建筑/),子目录里的文章在侧栏与分类页都会多一层,侧栏里子目录排在同级散文章之前。 categories/、tags/、archives/这些无编号目录是站点功能页,不要往里面写文章。- 内容横跨多类时,放进主要服务的那一类,再用
categories/tags补充。
命名规则
- 文件与目录都以「编号.名称」命名,如
01.快递和外卖.md;展示时自动去掉数字前缀,编号决定排序。 - 编号惯例:
00.放概览,01.–09.放主题文章,10.之后放 Q&A、附录等收尾内容,不必强行连续。 - 文件名会参与链接的自动生成,建议在 Frontmatter 里手写
permalink固定链接。 - 一篇文章一个
.md文件;文件名里避免? # &等符号。
排序规则
文章与分类的先后顺序只由文件名 / 目录名的编号决定(01. 排在 02. 前),没有别的排序字段:
- 侧栏、分类页、标签页三处顺序一致:同级先列子目录、再列散文章,两者内部各自按编号排。
- 分类页里的子分类条目也按所在目录的编号排,并排在文章之前。
- 想调整顺序就改编号前缀,改完三处同时生效。
- 唯一例外:最近更新页按最后更新时间倒序排。
- 早期文章里可能残留
order: 数字字段,该字段已废弃、不再生效,可以直接删掉。
Frontmatter
Frontmatter 是文件顶部的元信息,被一对三短划线包裹。完整示例:
yaml
---
title: 快递和外卖
description: 校内快递点与外卖取送指南。
date: 2026-09-01
lastUpdated: 2026-09-09
categories:
- 校园生活
tags:
- 校园生活
permalink: /pages/Delivery
---| 字段 | 必填 | 说明 |
|---|---|---|
title | 是 | 文章标题,会覆盖正文里手写的一级标题,所以正文不要再写一级标题 |
description | 建议 | 一句话简介,用于分享卡片与页面描述 |
date | 是 | 创建日期 YYYY-MM-DD,后续修改保留 |
lastUpdated | 条件 | 最近一次内容更新日期。新增、删改正文或修订信息时与内容同一提交更新;纯排版、分类调整不更新。未填写则以 date 作为最后更新时间显示 |
categories | 可选 | 补充分类。目录层级本身就是分类(如 04.校园生活/08.校园建筑/ 自动是「校园生活/校园建筑」),一般不用再写 |
tags | 可选 | 标签,出现在标签页与文章标题旁 |
permalink | 建议 | 固定访问链接,不写则由文件路径自动生成(带编号、会随改名变化),强烈建议手写 |
author | 可选 | 页尾「本文作者」。不写则显示兜底的 NKUwiki-Group |
author 的写法
支持两种写法,可以在同一个数组里混用:
yaml
# 写法一:只写名字字符串,其余信息(GitHub、头像、联系方式)按名字到
# docs/.vitepress/data/members.ts 的成员表里查
author: [Cure, NKUwiki-Group]
# 写法二:对象形式,适合不在成员表里的客串作者就地补字段;
# 显式写了的字段会覆盖成员表里的同名信息
author:
- name: 客串作者 # 必填,缺 name 的整条忽略
github: someones # GitHub 用户名:自动取头像与个人页链接
avatar: https://img.example.com/avatar.png # 自定义头像,优先级最高
link: https://blog.example.com # 点击头像跳转的链接
contact: QQ:123456789 # 悬停头像时显示的联系方式
email: guest@example.com # 邮箱(写裸邮箱会自动补 mailto:)各信息的取值优先级(从前到后):
- 头像:frontmatter 的
avatar→ 成员表 → GitHub 头像(github.com/<用户名>.png)→ 姓名首字生成的本地头像(首字 + 由姓名决定的稳定配色,离线可用) - 跳转链接:frontmatter 的
link→ 成员表 → GitHub 个人页 - 悬停标签:frontmatter 的
contact→ 成员表 → GitHub 用户名 → 邮箱;全都没有时悬停不弹
其他规则:
- 不写
author时页尾显示兜底的NKUwiki-Group - 非数组的写法(
author: Cure、author: { name: Cure })会被忽略;数组里缺name或名字为空的元素也会被忽略 - 名字本身带空格没问题,会整体当作一个名字;多个作者就写多个元素,页尾按声明顺序展示、不去重
- 名字或邮箱里含
:、#或以@、?、&等开头时,用引号包起来,例如email: "mailto:a@b.com"
其他开关字段
| 字段 | 作用 |
|---|---|
hideChangelog: true | 隐藏页面的编辑历史区块 |
layout: wide | 使用宽屏布局(适合大表格卡片页,如群汇总);宽屏页面会自动隐藏字数与阅读时间,无需额外设置 |
article: false | 让构建跳过这个 md——它不出现在侧栏、分类、标签、归档和搜索里(适合目录里的说明性文件) |
另有 VitePress 原生的 frontmatter(layout: home、sidebar: false、outline、footer 等,首页与地图页在用),普通文章不需要,完整列表见 VitePress 官方文档。
首页「活动」栏的数据文件(docs/activity/)用的是另一组专用字段(title、date、end、campus、venue、link、description),详见该目录的说明。
图片与附件
- 图片放
docs/public/img/目录编号/文章编号/,如docs/public/img/04/08/主楼.png。 - 正文引用写绝对路径:
(不带public前缀)。 - 校园地图点位的图片单独放
docs/public/map/pic/,引用路径为/map/pic/...。 - 建议图片宽度不超过 1200px、优先 webp/png,控制体积。
正文写作规范
- 一级标题由
title生成,正文从##二级标题开始。 - 标准语法(标题、强调、列表、引用、代码、链接、图片等)见Markdown 基础语法;扩展语法(表格、脚注、公式、任务列表等)见Markdown 常见扩展语法。一页速查见语法速查表,本站专属写法见本站特有的 Markdown 语法。
- 排版细节遵循全站约定:中文与英文/数字之间加空格、使用全角标点,详见网页写作排版规范。
- 站内链接用 permalink(如
/pages/Contributing/);链接校园地图写/map(不带尾部斜杠,否则构建会报死链)。 - 卡片列表、应用卡片、图片画廊、地图点位关联等站点功能的用法,见站点功能说明。
本地预览
改完后建议本地跑一下确认效果(需要 Node.js 22.19+/24.11+/26+ 与 pnpm 11.24.0):
bash
pnpm install
pnpm dev # http://localhost:5173/ 打开自己改的页面检查写完后的提交渠道见贡献方式。
致谢
本篇参考了 NCEPUwiki-基础贡献 的框架,并结合本站实际情况重写。
评论