From aa18da125a11ee3a7f7c5ee52fb15d5f93d4d1e5 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 20:33:15 +0800 Subject: [PATCH] fix: fix some issue with new generateSidebar function --- .vitepress/config.js | 10 +-- .vitepress/sidebar.js | 75 +++++++++++++------ 5.安全模块/5.1aaa.md | 0 5.安全模块/5.2bbb/5.2.10ddd.md | 0 5.安全模块/5.2bbb/5.2.1ccc.md | 0 .../5.2.3.1.1sss/5.2.3.1.1endHere.md | 0 5.安全模块/5.2bbb/5.2bbb.md | 1 + 7 files changed, 57 insertions(+), 29 deletions(-) create mode 100644 5.安全模块/5.1aaa.md create mode 100644 5.安全模块/5.2bbb/5.2.10ddd.md create mode 100644 5.安全模块/5.2bbb/5.2.1ccc.md create mode 100644 5.安全模块/5.2bbb/5.2.3kk/5.2.3.1kk/5.2.3.1.1sss/5.2.3.1.1endHere.md create mode 100644 5.安全模块/5.2bbb/5.2bbb.md diff --git a/.vitepress/config.js b/.vitepress/config.js index 0c78055..5f0c954 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -51,11 +51,11 @@ export default withMermaid({ sidebar: { '/': main_sidebar(), - '/1.杭电生存指南/': generateSidebar('1.杭电生存指南', ['static']), - '/2.编程模块/': generateSidebar('2.编程模块', ['static']), - '/3.AI模块/': generateSidebar('3.AI模块', ['static']), - '/4.WEB模块/': generateSidebar('4.WEB模块', ['static']), - '/5.安全模块/': generateSidebar('5.安全模块', ['static']), + '/1.杭电生存指南/': await generateSidebar('1.杭电生存指南'), + '/2.编程模块/': await generateSidebar('2.编程模块'), + '/3.AI模块/': await generateSidebar('3.AI模块'), + '/4.WEB模块/': await generateSidebar('4.WEB模块'), + '/5.安全模块/': await generateSidebar('5.安全模块'), '/2023旧版内容/': main_sidebar_old(), '/2023旧版内容/2.高效学习/': chapter2_old(), '/2023旧版内容/3.编程思维体系构建/': chapter3_old(), diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index 1ba42dd..08c864a 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -1,4 +1,4 @@ -import fs from 'fs'; +import fs from 'fs/promises'; import path from 'path'; export function main_sidebar() { @@ -546,31 +546,58 @@ function compareNumericPrefixes(a, b) { return 0; } -// Function to generate sidebar items -/** - * - * @param {String} dir the start folder to scan - * @param {String[]} excludeDir exclude unwanted folder - * @returns - */ -export function generateSidebar(dir, excludeDir = []) { - const files = fs.readdirSync(dir); + +export async function generateSidebarBasic(dir, excludeDir = [], maxDepth, currentDepth = 0) { + if (currentDepth >= maxDepth) + console.warn("the file depth is beyond the maxium depth that your sidebar can show!"); + const files = await fs.readdir(dir); const sortedFiles = files.sort(compareNumericPrefixes); - return sortedFiles.map((file) => { - const fullPath = path.join(dir, file); - if (fs.statSync(fullPath).isDirectory()) { - if (excludeDir.includes(file)) { - return null; // Skip excluded directories + const sidebar = await Promise.all( + sortedFiles.map(async (file) => { + const fullPath = path.join(dir, file); + const stats = await fs.stat(fullPath); + + if (stats.isDirectory()) { + if (excludeDir.includes(file)) return null; // Skip excluded directories + return { + text: file, + collapsed: true, + items: await generateSidebarBasic(fullPath, excludeDir, maxDepth, ++currentDepth), + }; + } else if (file.endsWith('.md')) { + return { + text: file.replace('.md', ''), + link: `/${fullPath.replace('.md', '')}`, + }; } - return { - text: file, - collapsed: true, - items: generateSidebar(fullPath, excludeDir), - }; - } else if (file.endsWith('.md')) { - return { text: file.replace('.md', ''), link: `/${fullPath.replace('.md', '')}` }; - } - }).filter(Boolean); + }) + ); + + return sidebar.filter(Boolean); +} + +export async function generateSidebar( + dir, + { + excludeDir = ['static'], + previousLevel = '/', + previousLevelDescription = '返回上一层', + topLevelName, + maxDepth = 5 + } = {} +) { + const sidebar = [ + { + text: previousLevelDescription, + link: previousLevel, + }, + { + text: topLevelName ?? dir, + collapsed: false, + items: await generateSidebarBasic(dir, excludeDir, maxDepth), + }, + ]; + return sidebar; } diff --git a/5.安全模块/5.1aaa.md b/5.安全模块/5.1aaa.md new file mode 100644 index 0000000..e69de29 diff --git a/5.安全模块/5.2bbb/5.2.10ddd.md b/5.安全模块/5.2bbb/5.2.10ddd.md new file mode 100644 index 0000000..e69de29 diff --git a/5.安全模块/5.2bbb/5.2.1ccc.md b/5.安全模块/5.2bbb/5.2.1ccc.md new file mode 100644 index 0000000..e69de29 diff --git a/5.安全模块/5.2bbb/5.2.3kk/5.2.3.1kk/5.2.3.1.1sss/5.2.3.1.1endHere.md b/5.安全模块/5.2bbb/5.2.3kk/5.2.3.1kk/5.2.3.1.1sss/5.2.3.1.1endHere.md new file mode 100644 index 0000000..e69de29 diff --git a/5.安全模块/5.2bbb/5.2bbb.md b/5.安全模块/5.2bbb/5.2bbb.md new file mode 100644 index 0000000..ba82523 --- /dev/null +++ b/5.安全模块/5.2bbb/5.2bbb.md @@ -0,0 +1 @@ +## hello