mirror of
https://github.com/ITStudioOUC/ITStudio-Wiki.git
synced 2026-06-15 13:06:30 +00:00
vitepress: generate sidebar by md files automatically
This commit is contained in:
+114
-17
@@ -1,73 +1,140 @@
|
|||||||
import { defineConfig } from "vitepress";
|
import { defineConfig } from "vitepress";
|
||||||
|
import fs from "fs";
|
||||||
|
import path from "path";
|
||||||
|
|
||||||
|
function getMarkdownFiles(dirPath: string): { text: string; link: string }[] {
|
||||||
|
if (!fs.existsSync(dirPath)) return [];
|
||||||
|
return fs
|
||||||
|
.readdirSync(dirPath)
|
||||||
|
.filter(
|
||||||
|
(file) =>
|
||||||
|
file.endsWith(".md") &&
|
||||||
|
!file.startsWith(".") &&
|
||||||
|
!file.startsWith("_") &&
|
||||||
|
file !== "index.md"
|
||||||
|
)
|
||||||
|
.sort()
|
||||||
|
.map((file) => ({
|
||||||
|
text:
|
||||||
|
file.replace(/\.md$/, "").charAt(0).toUpperCase() +
|
||||||
|
file.replace(/\.md$/, "").slice(1),
|
||||||
|
link:
|
||||||
|
"/" +
|
||||||
|
path
|
||||||
|
.relative(path.join(__dirname, "../src"), path.join(dirPath, file))
|
||||||
|
.replace(/\.md$/, "")
|
||||||
|
.replace(/\\/g, "/"),
|
||||||
|
}));
|
||||||
|
}
|
||||||
|
|
||||||
// https://vitepress.dev/reference/site-config
|
// https://vitepress.dev/reference/site-config
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
title: "爱特工作室(CCF海大学生分会)WIKI",
|
title: "爱特工作室(CCF海大学生分会)WIKI",
|
||||||
description: "Wiki for ITStudio.",
|
description: "Wiki for ITStudio.",
|
||||||
head: [["link", { rel: "icon", href: "/favicon.ico" }]],
|
head: [
|
||||||
|
["link", { rel: "icon", href: "/favicon.ico" }],
|
||||||
|
["meta", { name: "theme-color", content: "#3eaf7c" }],
|
||||||
|
["meta", { name: "apple-mobile-web-app-capable", content: "yes" }],
|
||||||
|
[
|
||||||
|
"meta",
|
||||||
|
{ name: "apple-mobile-web-app-status-bar-style", content: "black" },
|
||||||
|
],
|
||||||
|
],
|
||||||
lang: "zh-CN",
|
lang: "zh-CN",
|
||||||
srcDir: "src",
|
srcDir: "src",
|
||||||
|
lastUpdated: true,
|
||||||
|
|
||||||
themeConfig: {
|
themeConfig: {
|
||||||
logo: "/logo.png",
|
logo: "/logo.png",
|
||||||
siteTitle: "ITSTUDIO WIKI",
|
siteTitle: "ITSTUDIO WIKI",
|
||||||
|
|
||||||
|
// Enable search
|
||||||
search: {
|
search: {
|
||||||
provider: "local",
|
provider: "local",
|
||||||
|
options: {
|
||||||
|
translations: {
|
||||||
|
button: {
|
||||||
|
buttonText: "搜索文档",
|
||||||
|
buttonAriaLabel: "搜索文档",
|
||||||
|
},
|
||||||
|
modal: {
|
||||||
|
noResultsText: "无法找到相关结果",
|
||||||
|
resetButtonTitle: "清除查询条件",
|
||||||
|
footer: {
|
||||||
|
selectText: "选择",
|
||||||
|
navigateText: "切换",
|
||||||
|
closeText: "关闭",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Navigation
|
||||||
nav: [
|
nav: [
|
||||||
{ text: "Home", link: "/" },
|
{ text: "Home", link: "/" },
|
||||||
{ text: "Wiki", link: "/wiki/about/intro" }
|
{ text: "Wiki", link: "/wiki/about/intro" },
|
||||||
|
{
|
||||||
|
text: "相关链接",
|
||||||
|
items: [
|
||||||
|
{ text: "官方网站", link: "https://www.itstudio.club/" },
|
||||||
|
{ text: "GitHub", link: "https://github.com/ITStudioOUC" },
|
||||||
|
],
|
||||||
|
},
|
||||||
],
|
],
|
||||||
|
|
||||||
sidebar: {
|
sidebar: {
|
||||||
"/wiki": [
|
"/wiki": [
|
||||||
// {
|
|
||||||
// text: "ITStudio Wiki",
|
|
||||||
// link: "/wiki",
|
|
||||||
// },
|
|
||||||
{
|
{
|
||||||
text: "团队介绍",
|
text: "团队介绍",
|
||||||
// link: "/wiki/about",
|
|
||||||
items: [{ text: "爱特工作室简介", link: "/wiki/about/intro" }],
|
items: [{ text: "爱特工作室简介", link: "/wiki/about/intro" }],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "新闻公告",
|
text: "新闻公告",
|
||||||
// link: "/wiki/news",
|
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
text: "近期新闻",
|
text: "近期新闻",
|
||||||
link: "/wiki/news/recent-news",
|
link: "/wiki/news/recent-news",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/news/recent-news")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "活动公告",
|
text: "活动公告",
|
||||||
link: "/wiki/news/events",
|
link: "/wiki/news/events",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/news/events")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "技术与专业领域",
|
text: "技术与专业领域",
|
||||||
// link: "/wiki/tech",
|
|
||||||
items: [
|
items: [
|
||||||
{
|
{
|
||||||
text: "技术博客",
|
text: "技术博客",
|
||||||
link: "/wiki/tech/blog",
|
link: "/wiki/tech/blog",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/tech/blog")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "成员项目",
|
text: "成员项目",
|
||||||
link: "/wiki/tech/projects",
|
link: "/wiki/tech/projects",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/tech/projects")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "生活感悟",
|
text: "生活感悟",
|
||||||
link: "/wiki/life",
|
link: "/wiki/life",
|
||||||
|
items: getMarkdownFiles(path.join(__dirname, "../src/wiki/life")),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "联系方式与友情链接",
|
text: "联系方式与友情链接",
|
||||||
@@ -76,21 +143,51 @@ export default defineConfig({
|
|||||||
text: "联系方式",
|
text: "联系方式",
|
||||||
link: "/wiki/contact/contatusus",
|
link: "/wiki/contact/contatusus",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/contact/contatusus")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "友情链接",
|
text: "友情链接",
|
||||||
link: "/wiki/contact/link",
|
link: "/wiki/contact/link",
|
||||||
collapsed: false,
|
collapsed: false,
|
||||||
items: [],
|
items: getMarkdownFiles(
|
||||||
|
path.join(__dirname, "../src/wiki/contact/link")
|
||||||
|
),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Social links
|
||||||
socialLinks: [
|
socialLinks: [
|
||||||
{ icon: "googlehome", link: "https://www.itstudio.club/" },
|
{ icon: "github", link: "https://github.com/ITStudioOUC/ITStudio-Wiki" },
|
||||||
{ icon: "github", link: "https://github.com/ITStudioOUC" },
|
|
||||||
],
|
],
|
||||||
|
|
||||||
|
// Footer
|
||||||
|
footer: {
|
||||||
|
message: "Released under the Apache License 2.0",
|
||||||
|
copyright: "Copyright 2002-present ITStudio",
|
||||||
|
},
|
||||||
|
|
||||||
|
// Edit link
|
||||||
|
editLink: {
|
||||||
|
pattern:
|
||||||
|
"https://github.com/ITStudioOUC/ITStudio-Wiki/edit/main/src/:path",
|
||||||
|
text: "在 GitHub 上编辑此页",
|
||||||
|
},
|
||||||
|
|
||||||
|
// Doc footer
|
||||||
|
docFooter: {
|
||||||
|
prev: "上一页",
|
||||||
|
next: "下一页",
|
||||||
|
},
|
||||||
|
|
||||||
|
// Outline
|
||||||
|
outline: {
|
||||||
|
level: [2, 3],
|
||||||
|
label: "目录",
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Generated
+18
@@ -5,6 +5,7 @@
|
|||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^18.0.0",
|
||||||
"vitepress": "^1.5.0"
|
"vitepress": "^1.5.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1136,6 +1137,16 @@
|
|||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "18.19.67",
|
||||||
|
"resolved": "https://registry.npmmirror.com/@types/node/-/node-18.19.67.tgz",
|
||||||
|
"integrity": "sha512-wI8uHusga+0ZugNp0Ol/3BqQfEcCCNfojtO6Oou9iVNGPTL6QNSdnUdqq85fRgIorLhLMuPIKpsN98QE9Nh+KQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~5.26.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/@types/unist": {
|
"node_modules/@types/unist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz",
|
"resolved": "https://registry.npmmirror.com/@types/unist/-/unist-3.0.3.tgz",
|
||||||
@@ -2204,6 +2215,13 @@
|
|||||||
"url": "https://github.com/sponsors/wooorm"
|
"url": "https://github.com/sponsors/wooorm"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "5.26.5",
|
||||||
|
"resolved": "https://registry.npmmirror.com/undici-types/-/undici-types-5.26.5.tgz",
|
||||||
|
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
"node_modules/unist-util-is": {
|
"node_modules/unist-util-is": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.0.tgz",
|
"resolved": "https://registry.npmmirror.com/unist-util-is/-/unist-util-is-6.0.0.tgz",
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^18.0.0",
|
||||||
"vitepress": "^1.5.0"
|
"vitepress": "^1.5.0"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Reference in New Issue
Block a user