Skip to content

Commit 04b24ff

Browse files
committed
feat(docs): support ordered sidebar pages
1 parent d7e314c commit 04b24ff

3 files changed

Lines changed: 138 additions & 1 deletion

File tree

docs/.vitepress/config.js

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from "node:fs";
22
import path from "node:path";
33
import { fileURLToPath } from "node:url";
4+
import matter from "gray-matter";
45
import { defineConfig } from "vitepress";
56
import {
67
groupIconMdPlugin,
@@ -67,6 +68,14 @@ function pageItem(project, relativeFile) {
6768
};
6869
}
6970

71+
function pageOrder(project, relativeFile) {
72+
const filePath = path.join(docsSrcDir, project, relativeFile);
73+
const content = fs.readFileSync(filePath, "utf8");
74+
const order = matter(content).data.order;
75+
76+
return Number.isFinite(order) ? order : Number.POSITIVE_INFINITY;
77+
}
78+
7079
function listMarkdownFiles(project, relativeDir = "") {
7180
const dir = path.join(docsSrcDir, project, relativeDir);
7281

@@ -75,7 +84,15 @@ function listMarkdownFiles(project, relativeDir = "") {
7584
.filter((entry) => entry.isFile())
7685
.map((entry) => entry.name)
7786
.filter((file) => file.endsWith(".md") && file !== "index.md")
78-
.sort();
87+
.sort((a, b) => {
88+
const relA = path.join(relativeDir, a);
89+
const relB = path.join(relativeDir, b);
90+
const orderA = pageOrder(project, relA);
91+
const orderB = pageOrder(project, relB);
92+
93+
if (orderA !== orderB) return orderA - orderB;
94+
return a.localeCompare(b);
95+
});
7996
}
8097

8198
function listNestedDocDirs(project) {

docs/package-lock.json

Lines changed: 119 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
"preview": "vitepress preview"
99
},
1010
"devDependencies": {
11+
"gray-matter": "^4.0.3",
1112
"vitepress": "1.6.4",
1213
"vitepress-plugin-group-icons": "^1.7.5"
1314
}

0 commit comments

Comments
 (0)