Skip to content

Commit e63e569

Browse files
committed
feat(docs): use frontmatter for sidebar metadata
1 parent 04b24ff commit e63e569

1 file changed

Lines changed: 22 additions & 8 deletions

File tree

docs/.vitepress/config.js

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,20 +58,34 @@ function titleFromDir(dir) {
5858
return dir.replace(/-/g, " ").replace(/\b\w/g, (char) => char.toUpperCase());
5959
}
6060

61+
function pageData(project, relativeFile) {
62+
const filePath = path.join(docsSrcDir, project, relativeFile);
63+
const content = fs.readFileSync(filePath, "utf8");
64+
return matter(content).data;
65+
}
66+
67+
function pageTitle(project, relativeFile) {
68+
const title = pageData(project, relativeFile).title;
69+
if (typeof title === "string" && title.trim() !== "") {
70+
return title;
71+
}
72+
if (relativeFile === "index.md") {
73+
return project;
74+
}
75+
76+
return titleFromFile(path.basename(relativeFile));
77+
}
78+
6179
function pageItem(project, relativeFile) {
6280
const slug = relativeFile.replace(/\.md$/, "");
63-
const file = path.basename(relativeFile);
64-
6581
return {
66-
text: titleFromFile(file),
82+
text: pageTitle(project, relativeFile),
6783
link: `/${project}/${slug}`,
6884
};
6985
}
7086

7187
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;
88+
const order = pageData(project, relativeFile).order;
7589

7690
return Number.isFinite(order) ? order : Number.POSITIVE_INFINITY;
7791
}
@@ -116,7 +130,7 @@ function buildSidebar() {
116130
`/${project}/`,
117131
[
118132
{
119-
text: project,
133+
text: pageTitle(project, "index.md"),
120134
items: [
121135
{ text: "Overview", link: `/${project}/` },
122136
...pages.map((file) => pageItem(project, file)),
@@ -137,7 +151,7 @@ function buildSidebar() {
137151

138152
function buildProjectNavItems() {
139153
return listProjects().map((project) => ({
140-
text: project,
154+
text: pageTitle(project, "index.md"),
141155
link: `/${project}/`,
142156
}));
143157
}

0 commit comments

Comments
 (0)