From 6b5fd1de17e36de57d477f29e6642a1189a02b68 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 10:27:49 +0800 Subject: [PATCH 01/11] fix: when left-click the flagged block, will not trigger explosion --- .vitepress/composables/logic.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.vitepress/composables/logic.js b/.vitepress/composables/logic.js index b9a56b6..97924ef 100644 --- a/.vitepress/composables/logic.js +++ b/.vitepress/composables/logic.js @@ -133,7 +133,15 @@ export class GamePlay { this.generateMines(this.board, block); this.state.value.mineGenerated = true; } + + if (block.revealed) + return; + if (block.flagged) { + block.flagged = !block.flagged; + return; + } + block.revealed = true; if (block.mine) { this.onGameOver('lost'); From ebb4d0a7116020c00fb8b332afd6274aaddb4ab5 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 13:34:38 +0800 Subject: [PATCH 02/11] feat: add sidebarGenerator function to auto generate sidebar based file structure --- .vitepress/config.js | 17 ++++++++----- .vitepress/sidebar.js | 56 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 1465c28..0c78055 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -1,12 +1,12 @@ // import { defineConfig } from 'vitepress' -import { withMermaid } from "vitepress-plugin-mermaid-xyxsw"; +import { transformerTwoslash } from '@shikijs/vitepress-twoslash'; +import PanguPlugin from 'markdown-it-pangu'; +import { fileURLToPath, URL } from 'node:url'; +import VueMacros from 'unplugin-vue-macros/vite'; import { VitePWA } from 'vite-plugin-pwa'; -import { main_sidebar, main_sidebar_old, chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old } from './sidebar.js'; +import { withMermaid } from "vitepress-plugin-mermaid-xyxsw"; import { nav } from './nav.js'; -import PanguPlugin from 'markdown-it-pangu' -import { fileURLToPath, URL } from 'node:url' -import VueMacros from 'unplugin-vue-macros/vite' -import { transformerTwoslash } from '@shikijs/vitepress-twoslash' +import { chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old, generateSidebar, main_sidebar, main_sidebar_old } from './sidebar.js'; // https://vitepress.dev/reference/site-config export default withMermaid({ @@ -51,6 +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']), '/2023旧版内容/': main_sidebar_old(), '/2023旧版内容/2.高效学习/': chapter2_old(), '/2023旧版内容/3.编程思维体系构建/': chapter3_old(), diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index 14e3053..1ba42dd 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -1,3 +1,6 @@ +import fs from 'fs'; +import path from 'path'; + export function main_sidebar() { return [ { @@ -518,3 +521,56 @@ export function chapter9_old() { } ] } + +// Function to extract numeric prefix as an array of numbers +function getNumericPrefix(fileName) { + const match = fileName.match(/^(\d+(\.\d+)?(?:\.\d+)*)/); + if (match) { + return match[0].split('.').map(Number); // Convert to array of numbers + } + return []; +} + +// Function to compare two numeric prefixes +function compareNumericPrefixes(a, b) { + const prefixA = getNumericPrefix(a); + const prefixB = getNumericPrefix(b); + + for (let i = 0; i < Math.max(prefixA.length, prefixB.length); i++) { + const numA = prefixA[i] || 0; + const numB = prefixB[i] || 0; + if (numA !== numB) { + return numA - numB; + } + } + 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); + 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 + } + 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); +} + From c9127a7bc544cde2a0561a8b7b1893a5c5b829e2 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 14:05:31 +0800 Subject: [PATCH 03/11] Revert "feat: add sidebarGenerator function to auto generate sidebar based file structure" This reverts commit ebb4d0a7116020c00fb8b332afd6274aaddb4ab5. --- .vitepress/config.js | 17 +++++-------- .vitepress/sidebar.js | 56 ------------------------------------------- 2 files changed, 6 insertions(+), 67 deletions(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 0c78055..1465c28 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -1,12 +1,12 @@ // import { defineConfig } from 'vitepress' -import { transformerTwoslash } from '@shikijs/vitepress-twoslash'; -import PanguPlugin from 'markdown-it-pangu'; -import { fileURLToPath, URL } from 'node:url'; -import VueMacros from 'unplugin-vue-macros/vite'; -import { VitePWA } from 'vite-plugin-pwa'; import { withMermaid } from "vitepress-plugin-mermaid-xyxsw"; +import { VitePWA } from 'vite-plugin-pwa'; +import { main_sidebar, main_sidebar_old, chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old } from './sidebar.js'; import { nav } from './nav.js'; -import { chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old, generateSidebar, main_sidebar, main_sidebar_old } from './sidebar.js'; +import PanguPlugin from 'markdown-it-pangu' +import { fileURLToPath, URL } from 'node:url' +import VueMacros from 'unplugin-vue-macros/vite' +import { transformerTwoslash } from '@shikijs/vitepress-twoslash' // https://vitepress.dev/reference/site-config export default withMermaid({ @@ -51,11 +51,6 @@ 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']), '/2023旧版内容/': main_sidebar_old(), '/2023旧版内容/2.高效学习/': chapter2_old(), '/2023旧版内容/3.编程思维体系构建/': chapter3_old(), diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index 1ba42dd..14e3053 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -1,6 +1,3 @@ -import fs from 'fs'; -import path from 'path'; - export function main_sidebar() { return [ { @@ -521,56 +518,3 @@ export function chapter9_old() { } ] } - -// Function to extract numeric prefix as an array of numbers -function getNumericPrefix(fileName) { - const match = fileName.match(/^(\d+(\.\d+)?(?:\.\d+)*)/); - if (match) { - return match[0].split('.').map(Number); // Convert to array of numbers - } - return []; -} - -// Function to compare two numeric prefixes -function compareNumericPrefixes(a, b) { - const prefixA = getNumericPrefix(a); - const prefixB = getNumericPrefix(b); - - for (let i = 0; i < Math.max(prefixA.length, prefixB.length); i++) { - const numA = prefixA[i] || 0; - const numB = prefixB[i] || 0; - if (numA !== numB) { - return numA - numB; - } - } - 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); - 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 - } - 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); -} - From eee42b867f746264a6707bc221ed24b1e1915a80 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 13:34:38 +0800 Subject: [PATCH 04/11] feat: add sidebarGenerator function to auto generate sidebar based file structure --- .vitepress/config.js | 17 ++++++++----- .vitepress/sidebar.js | 56 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 6 deletions(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 1465c28..0c78055 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -1,12 +1,12 @@ // import { defineConfig } from 'vitepress' -import { withMermaid } from "vitepress-plugin-mermaid-xyxsw"; +import { transformerTwoslash } from '@shikijs/vitepress-twoslash'; +import PanguPlugin from 'markdown-it-pangu'; +import { fileURLToPath, URL } from 'node:url'; +import VueMacros from 'unplugin-vue-macros/vite'; import { VitePWA } from 'vite-plugin-pwa'; -import { main_sidebar, main_sidebar_old, chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old } from './sidebar.js'; +import { withMermaid } from "vitepress-plugin-mermaid-xyxsw"; import { nav } from './nav.js'; -import PanguPlugin from 'markdown-it-pangu' -import { fileURLToPath, URL } from 'node:url' -import VueMacros from 'unplugin-vue-macros/vite' -import { transformerTwoslash } from '@shikijs/vitepress-twoslash' +import { chapter2_old, chapter3_old, chapter4_old, chapter5_old, chapter6_old, chapter7_old, chapter8_old, chapter9_old, generateSidebar, main_sidebar, main_sidebar_old } from './sidebar.js'; // https://vitepress.dev/reference/site-config export default withMermaid({ @@ -51,6 +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']), '/2023旧版内容/': main_sidebar_old(), '/2023旧版内容/2.高效学习/': chapter2_old(), '/2023旧版内容/3.编程思维体系构建/': chapter3_old(), diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index 14e3053..1ba42dd 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -1,3 +1,6 @@ +import fs from 'fs'; +import path from 'path'; + export function main_sidebar() { return [ { @@ -518,3 +521,56 @@ export function chapter9_old() { } ] } + +// Function to extract numeric prefix as an array of numbers +function getNumericPrefix(fileName) { + const match = fileName.match(/^(\d+(\.\d+)?(?:\.\d+)*)/); + if (match) { + return match[0].split('.').map(Number); // Convert to array of numbers + } + return []; +} + +// Function to compare two numeric prefixes +function compareNumericPrefixes(a, b) { + const prefixA = getNumericPrefix(a); + const prefixB = getNumericPrefix(b); + + for (let i = 0; i < Math.max(prefixA.length, prefixB.length); i++) { + const numA = prefixA[i] || 0; + const numB = prefixB[i] || 0; + if (numA !== numB) { + return numA - numB; + } + } + 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); + 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 + } + 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); +} + From aa18da125a11ee3a7f7c5ee52fb15d5f93d4d1e5 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 20:33:15 +0800 Subject: [PATCH 05/11] 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 From 4c7ddbb833c4bbb42f3d4d206cf67526ee8f3ed6 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 21:03:42 +0800 Subject: [PATCH 06/11] chore: delete the temp file --- 5.安全模块/5.1aaa.md | 0 5.安全模块/5.2bbb/5.2.10ddd.md | 0 5.安全模块/5.2bbb/5.2.1ccc.md | 0 .../5.2bbb/5.2.3kk/5.2.3.1kk/5.2.3.1.1sss/5.2.3.1.1endHere.md | 0 5.安全模块/5.2bbb/5.2bbb.md | 1 - 5 files changed, 1 deletion(-) delete mode 100644 5.安全模块/5.1aaa.md delete mode 100644 5.安全模块/5.2bbb/5.2.10ddd.md delete mode 100644 5.安全模块/5.2bbb/5.2.1ccc.md delete mode 100644 5.安全模块/5.2bbb/5.2.3kk/5.2.3.1kk/5.2.3.1.1sss/5.2.3.1.1endHere.md delete mode 100644 5.安全模块/5.2bbb/5.2bbb.md diff --git a/5.安全模块/5.1aaa.md b/5.安全模块/5.1aaa.md deleted file mode 100644 index e69de29..0000000 diff --git a/5.安全模块/5.2bbb/5.2.10ddd.md b/5.安全模块/5.2bbb/5.2.10ddd.md deleted file mode 100644 index e69de29..0000000 diff --git a/5.安全模块/5.2bbb/5.2.1ccc.md b/5.安全模块/5.2bbb/5.2.1ccc.md deleted file mode 100644 index e69de29..0000000 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 deleted file mode 100644 index e69de29..0000000 diff --git a/5.安全模块/5.2bbb/5.2bbb.md b/5.安全模块/5.2bbb/5.2bbb.md deleted file mode 100644 index ba82523..0000000 --- a/5.安全模块/5.2bbb/5.2bbb.md +++ /dev/null @@ -1 +0,0 @@ -## hello From d60855c8e8670ef1673bb217084abeb10c7edf36 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 21:20:12 +0800 Subject: [PATCH 07/11] fix: turn the generateSidebar to sync way --- .vitepress/config.js | 10 +++++----- .vitepress/sidebar.js | 19 +++++++++---------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/.vitepress/config.js b/.vitepress/config.js index 5f0c954..272a76b 100644 --- a/.vitepress/config.js +++ b/.vitepress/config.js @@ -51,11 +51,11 @@ export default withMermaid({ sidebar: { '/': main_sidebar(), - '/1.杭电生存指南/': await generateSidebar('1.杭电生存指南'), - '/2.编程模块/': await generateSidebar('2.编程模块'), - '/3.AI模块/': await generateSidebar('3.AI模块'), - '/4.WEB模块/': await generateSidebar('4.WEB模块'), - '/5.安全模块/': await generateSidebar('5.安全模块'), + '/1.杭电生存指南/': generateSidebar('1.杭电生存指南'), + '/2.编程模块/': generateSidebar('2.编程模块'), + '/3.AI模块/': generateSidebar('3.AI模块'), + '/4.WEB模块/': generateSidebar('4.WEB模块'), + '/5.安全模块/': 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 08c864a..f33d81d 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -1,4 +1,4 @@ -import fs from 'fs/promises'; +import fs from 'fs'; import path from 'path'; export function main_sidebar() { @@ -547,23 +547,23 @@ function compareNumericPrefixes(a, b) { } -export async function generateSidebarBasic(dir, excludeDir = [], maxDepth, currentDepth = 0) { +export 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 files = fs.readdirSync(dir); const sortedFiles = files.sort(compareNumericPrefixes); - const sidebar = await Promise.all( - sortedFiles.map(async (file) => { + const sidebar = + sortedFiles.map((file) => { const fullPath = path.join(dir, file); - const stats = await fs.stat(fullPath); + const stats = fs.statSync(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), + items: generateSidebarBasic(fullPath, excludeDir, maxDepth, currentDepth + 1), }; } else if (file.endsWith('.md')) { return { @@ -572,12 +572,11 @@ export async function generateSidebarBasic(dir, excludeDir = [], maxDepth, curre }; } }) - ); return sidebar.filter(Boolean); } -export async function generateSidebar( +export function generateSidebar( dir, { excludeDir = ['static'], @@ -595,7 +594,7 @@ export async function generateSidebar( { text: topLevelName ?? dir, collapsed: false, - items: await generateSidebarBasic(dir, excludeDir, maxDepth), + items: generateSidebarBasic(dir, excludeDir, maxDepth), }, ]; return sidebar; From 9bcce5aa298f2674979df90fb1e61e33505a17be Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 21:59:21 +0800 Subject: [PATCH 08/11] docs: propose the code of document naming --- CONTRIBUTING.md | 584 ++++++++++++++++++++++++++++-------------------- 1 file changed, 344 insertions(+), 240 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fca6c30..d941638 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,198 +25,291 @@ - 网站页面设计 - 在各种媒体、博客文章、群内宣传 HDU-CS-WIKI +## 文档命名 + +1. 对于 md 文件,请命名为 `数字与小数点前缀+文档标题` 的格式 + + ``` + 1.1.2 新内容.md + 2. 序言.md + ``` + +2. 如果您需要开启新的小章节模块,请新建一个文件夹,文件夹的命名格式与 md 文件类似,为 `数字与小数点前缀+模块名` + + ``` + 2.2 模块 2 + ``` + +3. 不论是 md 文件还是文件夹,请不要使用字母或其他特殊符号作为前缀 + +一个合理的文档结构如下: + +``` +. +└─ 1.第一章 +   ├── 1.1 模块 1 +   │   ├── 1.1.10 JavaScript.md +   │   ├── 1.1.11 Lua.md +   │   ├── 1.1.12 Lisp.md +   │   ├── 1.1.1 Ruby.md +   │   ├── 1.1.2 Java.md +   │   ├── 1.1.3 C++.md +   │   ├── 1.1.4 C.md +   │   ├── 1.1.5 Math.md +   │   ├── 1.1.6 Matlab.md +   │   ├── 1.1.7 React.md +   │   ├── 1.1.8 Jupyter.md +   │   └── 1.1.9 Vue.md +   ├── 1.2 模块 2 +   │   ├── 1.2.1 C#.md +   │   ├── 1.2.2 Python.md + │ └── static +   ├── 1.3 结语.md +   ├── 1. 序言.md +   └── static +``` + +static 文件夹用于存放您的静态资源,如图片,您也可以在模块文件夹下放置新的 static 文件夹,方便引用资源 + ## 文档风格 1. 使用 Markdown 编写文档,文档格式参考 Markdown 语法。 -2. 一个页面必须且只有一个1级标题(H1,一个#),其他标题从2级开始(H2,##)。 +2. 一个页面必须且只有一个 1 级标题(H1,一个#),其他标题从 2 级开始(H2,##)。 3. 本项目自动在英文与中文、数字与中文之间添加空格。 ```markdown - AI 与人工智能,AGI 的发展方向。 + AI 与人工智能,AGI 的发展方向。 ``` 4. 标题内的英文单词首字母大写。 5. 代码块使用 ` ``` ` 包裹,并标注常见的语言标识符,如 ` ```python ` ,其作用是使代码正常高亮。 -::: details 代码高亮支持的语言 + ::: details 代码高亮支持的语言 ```ts twoslash export type Lang = - | 'abap' - | 'actionscript-3' - | 'ada' - | 'apache' - | 'apex' - | 'apl' - | 'applescript' - | 'ara' - | 'asm' - | 'astro' - | 'awk' - | 'ballerina' - | 'bat' | 'batch' - | 'beancount' - | 'berry' | 'be' - | 'bibtex' - | 'bicep' - | 'blade' - | 'c' - | 'cadence' | 'cdc' - | 'clarity' - | 'clojure' | 'clj' - | 'cmake' - | 'cobol' - | 'codeql' | 'ql' - | 'coffee' - | 'cpp' - | 'crystal' - | 'csharp' | 'c#' | 'cs' - | 'css' - | 'cue' - | 'cypher' | 'cql' - | 'd' - | 'dart' - | 'dax' - | 'diff' - | 'docker' | 'dockerfile' - | 'dream-maker' - | 'elixir' - | 'elm' - | 'erb' - | 'erlang' | 'erl' - | 'fish' - | 'fsharp' | 'f#' | 'fs' - | 'gdresource' - | 'gdscript' - | 'gdshader' - | 'gherkin' - | 'git-commit' - | 'git-rebase' - | 'glimmer-js' | 'gjs' - | 'glimmer-ts' | 'gts' - | 'glsl' - | 'gnuplot' - | 'go' - | 'graphql' - | 'groovy' - | 'hack' - | 'haml' - | 'handlebars' | 'hbs' - | 'haskell' | 'hs' - | 'hcl' - | 'hjson' - | 'hlsl' - | 'html' - | 'http' - | 'imba' - | 'ini' | 'properties' - | 'java' - | 'javascript' | 'js' - | 'jinja-html' - | 'jison' - | 'json' - | 'json5' - | 'jsonc' - | 'jsonl' - | 'jsonnet' - | 'jssm' | 'fsl' - | 'jsx' - | 'julia' - | 'kotlin' - | 'kusto' | 'kql' - | 'latex' - | 'less' - | 'liquid' - | 'lisp' - | 'logo' - | 'lua' - | 'make' | 'makefile' - | 'markdown' | 'md' - | 'marko' - | 'matlab' - | 'mdx' - | 'mermaid' - | 'mojo' - | 'narrat' | 'nar' - | 'nextflow' | 'nf' - | 'nginx' - | 'nim' - | 'nix' - | 'objective-c' | 'objc' - | 'objective-cpp' - | 'ocaml' - | 'pascal' - | 'perl' - | 'php' - | 'plsql' - | 'postcss' - | 'powerquery' - | 'powershell' | 'ps' | 'ps1' - | 'prisma' - | 'prolog' - | 'proto' - | 'pug' | 'jade' - | 'puppet' - | 'purescript' - | 'python' | 'py' - | 'r' - | 'raku' | 'perl6' - | 'razor' - | 'reg' - | 'rel' - | 'riscv' - | 'rst' - | 'ruby' | 'rb' - | 'rust' | 'rs' - | 'sas' - | 'sass' - | 'scala' - | 'scheme' - | 'scss' - | 'shaderlab' | 'shader' - | 'shellscript' | 'bash' | 'sh' | 'shell' | 'zsh' - | 'shellsession' | 'console' - | 'smalltalk' - | 'solidity' - | 'sparql' - | 'splunk' | 'spl' - | 'sql' - | 'ssh-config' - | 'stata' - | 'stylus' | 'styl' - | 'svelte' - | 'swift' - | 'system-verilog' - | 'tasl' - | 'tcl' - | 'tex' - | 'toml' - | 'tsx' - | 'turtle' - | 'twig' - | 'typescript' | 'ts' - | 'v' - | 'vb' | 'cmd' - | 'verilog' - | 'vhdl' - | 'viml' | 'vim' | 'vimscript' - | 'vue-html' - | 'vue' - | 'vyper' | 'vy' - | 'wasm' - | 'wenyan' | '文言' - | 'wgsl' - | 'wolfram' - | 'xml' - | 'xsl' - | 'yaml' | 'yml' - | 'zenscript' - | 'zig' + | "abap" + | "actionscript-3" + | "ada" + | "apache" + | "apex" + | "apl" + | "applescript" + | "ara" + | "asm" + | "astro" + | "awk" + | "ballerina" + | "bat" + | "batch" + | "beancount" + | "berry" + | "be" + | "bibtex" + | "bicep" + | "blade" + | "c" + | "cadence" + | "cdc" + | "clarity" + | "clojure" + | "clj" + | "cmake" + | "cobol" + | "codeql" + | "ql" + | "coffee" + | "cpp" + | "crystal" + | "csharp" + | "c#" + | "cs" + | "css" + | "cue" + | "cypher" + | "cql" + | "d" + | "dart" + | "dax" + | "diff" + | "docker" + | "dockerfile" + | "dream-maker" + | "elixir" + | "elm" + | "erb" + | "erlang" + | "erl" + | "fish" + | "fsharp" + | "f#" + | "fs" + | "gdresource" + | "gdscript" + | "gdshader" + | "gherkin" + | "git-commit" + | "git-rebase" + | "glimmer-js" + | "gjs" + | "glimmer-ts" + | "gts" + | "glsl" + | "gnuplot" + | "go" + | "graphql" + | "groovy" + | "hack" + | "haml" + | "handlebars" + | "hbs" + | "haskell" + | "hs" + | "hcl" + | "hjson" + | "hlsl" + | "html" + | "http" + | "imba" + | "ini" + | "properties" + | "java" + | "javascript" + | "js" + | "jinja-html" + | "jison" + | "json" + | "json5" + | "jsonc" + | "jsonl" + | "jsonnet" + | "jssm" + | "fsl" + | "jsx" + | "julia" + | "kotlin" + | "kusto" + | "kql" + | "latex" + | "less" + | "liquid" + | "lisp" + | "logo" + | "lua" + | "make" + | "makefile" + | "markdown" + | "md" + | "marko" + | "matlab" + | "mdx" + | "mermaid" + | "mojo" + | "narrat" + | "nar" + | "nextflow" + | "nf" + | "nginx" + | "nim" + | "nix" + | "objective-c" + | "objc" + | "objective-cpp" + | "ocaml" + | "pascal" + | "perl" + | "php" + | "plsql" + | "postcss" + | "powerquery" + | "powershell" + | "ps" + | "ps1" + | "prisma" + | "prolog" + | "proto" + | "pug" + | "jade" + | "puppet" + | "purescript" + | "python" + | "py" + | "r" + | "raku" + | "perl6" + | "razor" + | "reg" + | "rel" + | "riscv" + | "rst" + | "ruby" + | "rb" + | "rust" + | "rs" + | "sas" + | "sass" + | "scala" + | "scheme" + | "scss" + | "shaderlab" + | "shader" + | "shellscript" + | "bash" + | "sh" + | "shell" + | "zsh" + | "shellsession" + | "console" + | "smalltalk" + | "solidity" + | "sparql" + | "splunk" + | "spl" + | "sql" + | "ssh-config" + | "stata" + | "stylus" + | "styl" + | "svelte" + | "swift" + | "system-verilog" + | "tasl" + | "tcl" + | "tex" + | "toml" + | "tsx" + | "turtle" + | "twig" + | "typescript" + | "ts" + | "v" + | "vb" + | "cmd" + | "verilog" + | "vhdl" + | "viml" + | "vim" + | "vimscript" + | "vue-html" + | "vue" + | "vyper" + | "vy" + | "wasm" + | "wenyan" + | "文言" + | "wgsl" + | "wolfram" + | "xml" + | "xsl" + | "yaml" + | "yml" + | "zenscript" + | "zig"; ``` ::: ::: tip 🤓 注意 -尽量不要使用 `typora` 等编辑器编辑完 .md文件后直接提交,因为它的渲染效果和本项目前端 md 渲染器 `vitepress markdown-it` 不一致。 +尽量不要使用 `typora` 等编辑器编辑完 .md 文件后直接提交,因为它的渲染效果和本项目前端 md 渲染器 `vitepress markdown-it` 不一致。 在 `typora` 中编辑完成后,确认一下 .md 文件源代码是否为正常 Markdown 。 @@ -230,7 +323,7 @@ vitepress 框架要求,强制需要 nodejs v18.0 及以上版本。 本项目使用包管理器 npm。 ```bash -npm install +npm install npm run docs:dev #运行预览环境 ``` @@ -241,7 +334,7 @@ npm run docs:preview #预览线上环境 ## 图片放置指南 -图片放置在当前大章节的 `static` 目录下,然后在 md 文件中使用相对路径引用。 +图片放置在当前大章节 或者 模块章节的 `static` 目录下,然后在 md 文件中使用相对路径引用。 ```markdown ![](static/xxx.png) @@ -265,12 +358,13 @@ npm run docs:preview #预览线上环境 ## 如何使用 Git 和 Github -详见 [3.5 Git和Github](./2023旧版内容/3.编程思维体系构建/3.5git与github.md) +详见 [3.5 Git 和 Github](./2023旧版内容/3.编程思维体系构建/3.5git与github.md) ## Commit Message 规范 ::: tip 🐒 本项目没有强制使用 [commitlint](https://github.com/conventional-changelog/commitlint) ,但是建议遵循以下规范。 + > commitlint : 一个提交检查插件 ,可以在提交前检查 commit message 是否符合规范。 本项目选用的规范为 [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional)(基于 [Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines) 约定) @@ -294,13 +388,13 @@ type为commit的类型 build: 对项目构建或者依赖的改动 ci: CI 的修改 revert: revert 前一个 commit(撤销前一个commit) - + scope是文件名 / 模块名 / 影响的范围 例如 schoolSchedule - + subject为commit概述 建议符合 50 / 72 formatting - + 例 feat(JoinForm): add success submit tips 冒号后方可以使用中文描述 @@ -322,93 +416,103 @@ Fork 本仓库,然后在你的仓库中进行修改,修改完成后在本仓 ## Feature -1. Markdown 内支持Latex公式,格式为单行公式双dollar符号、单行公式单dollar符号。(单行公式需要换行才能解析)例如: - ```latex - $行内公式\arccos{a}$ - ``` - > 会渲染成 $\arccos{a}$ - ```latex - $$单行公式\arcsin{b}$$ - ``` - > 会渲染成 - > - > $$\arcsin{b}$$ - ::: tip - Latex语法在线编辑器 https://www.latexlive.com - ::: +1. Markdown 内支持 Latex 公式,格式为单行公式双 dollar 符号、单行公式单 dollar 符号。(单行公式需要换行才能解析)例如: -2. 支持Mermaid流程图,格式如下 - ```markdown - ```mermaid - graph TD; - A-->B; - A-->C; - B-->D; - C-->D; - ``` - ``` - 会渲染成 - ```mermaid - graph TD; - A-->B; - A-->C; - B-->D; - C-->D; - ``` - :::tip - 语法自查 https://mermaid.js.org - ::: + ```latex + $行内公式\arccos{a}$ + ``` + + > 会渲染成 $\arccos{a}$ + + ```latex + $$单行公式\arcsin{b}$$ + ``` + + > 会渲染成 + > + > $$\arcsin{b}$$ + > ::: tip + > Latex 语法在线编辑器 https://www.latexlive.com + > ::: + +2. 支持 Mermaid 流程图,格式如下 + + ````markdown + ```mermaid + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + ``` + ```` + + 会渲染成 + + ```mermaid + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + ``` + + :::tip + 语法自查 https://mermaid.js.org + ::: 3. 代码分块 - ``` - ::: code-group + ```` + ::: code-group - ```sh [npm] - $ npm install -D vitepress - ``` + ```sh [npm] + $ npm install -D vitepress + ``` - ```sh [pnpm] - $ pnpm add -D vitepress - ``` + ```sh [pnpm] + $ pnpm add -D vitepress + ``` - ```sh [yarn] - $ yarn add -D vitepress - ``` + ```sh [yarn] + $ yarn add -D vitepress + ``` - ::: - ``` - ::: code-group + ::: + ```` - ```sh [npm] - $ npm install -D vitepress - ``` + ::: code-group - ```sh [pnpm] - $ pnpm add -D vitepress - ``` + ```sh [npm] + $ npm install -D vitepress + ``` - ```sh [yarn] - $ yarn add -D vitepress - ``` + ```sh [pnpm] + $ pnpm add -D vitepress + ``` - ::: + ```sh [yarn] + $ yarn add -D vitepress + ``` + ::: 4. 图片缩放 图片默认支持缩放,鼠标悬浮图片上方会出现放大镜图标,点击即可放大图片。 -如果不想让图片缩放,可以在图片class内后添加 `no-zoom` 参数。 +如果不想让图片缩放,可以在图片 class 内后添加 `no-zoom` 参数。 markdown 的使用方式如下 ```markdown # 默认(支持缩放) + ![](static/xxx.png) ``` ```markdown # 不支持缩放 + ![](static/xxx.png){.no-zoom} ``` From fb276b21cf10c4900e25589b14fab18638e01cb1 Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 22:48:44 +0800 Subject: [PATCH 09/11] Revert "docs: propose the code of document naming" This reverts commit 9bcce5aa298f2674979df90fb1e61e33505a17be. --- CONTRIBUTING.md | 584 ++++++++++++++++++++---------------------------- 1 file changed, 240 insertions(+), 344 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d941638..fca6c30 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,291 +25,198 @@ - 网站页面设计 - 在各种媒体、博客文章、群内宣传 HDU-CS-WIKI -## 文档命名 - -1. 对于 md 文件,请命名为 `数字与小数点前缀+文档标题` 的格式 - - ``` - 1.1.2 新内容.md - 2. 序言.md - ``` - -2. 如果您需要开启新的小章节模块,请新建一个文件夹,文件夹的命名格式与 md 文件类似,为 `数字与小数点前缀+模块名` - - ``` - 2.2 模块 2 - ``` - -3. 不论是 md 文件还是文件夹,请不要使用字母或其他特殊符号作为前缀 - -一个合理的文档结构如下: - -``` -. -└─ 1.第一章 -   ├── 1.1 模块 1 -   │   ├── 1.1.10 JavaScript.md -   │   ├── 1.1.11 Lua.md -   │   ├── 1.1.12 Lisp.md -   │   ├── 1.1.1 Ruby.md -   │   ├── 1.1.2 Java.md -   │   ├── 1.1.3 C++.md -   │   ├── 1.1.4 C.md -   │   ├── 1.1.5 Math.md -   │   ├── 1.1.6 Matlab.md -   │   ├── 1.1.7 React.md -   │   ├── 1.1.8 Jupyter.md -   │   └── 1.1.9 Vue.md -   ├── 1.2 模块 2 -   │   ├── 1.2.1 C#.md -   │   ├── 1.2.2 Python.md - │ └── static -   ├── 1.3 结语.md -   ├── 1. 序言.md -   └── static -``` - -static 文件夹用于存放您的静态资源,如图片,您也可以在模块文件夹下放置新的 static 文件夹,方便引用资源 - ## 文档风格 1. 使用 Markdown 编写文档,文档格式参考 Markdown 语法。 -2. 一个页面必须且只有一个 1 级标题(H1,一个#),其他标题从 2 级开始(H2,##)。 +2. 一个页面必须且只有一个1级标题(H1,一个#),其他标题从2级开始(H2,##)。 3. 本项目自动在英文与中文、数字与中文之间添加空格。 ```markdown - AI 与人工智能,AGI 的发展方向。 + AI 与人工智能,AGI 的发展方向。 ``` 4. 标题内的英文单词首字母大写。 5. 代码块使用 ` ``` ` 包裹,并标注常见的语言标识符,如 ` ```python ` ,其作用是使代码正常高亮。 - ::: details 代码高亮支持的语言 +::: details 代码高亮支持的语言 ```ts twoslash export type Lang = - | "abap" - | "actionscript-3" - | "ada" - | "apache" - | "apex" - | "apl" - | "applescript" - | "ara" - | "asm" - | "astro" - | "awk" - | "ballerina" - | "bat" - | "batch" - | "beancount" - | "berry" - | "be" - | "bibtex" - | "bicep" - | "blade" - | "c" - | "cadence" - | "cdc" - | "clarity" - | "clojure" - | "clj" - | "cmake" - | "cobol" - | "codeql" - | "ql" - | "coffee" - | "cpp" - | "crystal" - | "csharp" - | "c#" - | "cs" - | "css" - | "cue" - | "cypher" - | "cql" - | "d" - | "dart" - | "dax" - | "diff" - | "docker" - | "dockerfile" - | "dream-maker" - | "elixir" - | "elm" - | "erb" - | "erlang" - | "erl" - | "fish" - | "fsharp" - | "f#" - | "fs" - | "gdresource" - | "gdscript" - | "gdshader" - | "gherkin" - | "git-commit" - | "git-rebase" - | "glimmer-js" - | "gjs" - | "glimmer-ts" - | "gts" - | "glsl" - | "gnuplot" - | "go" - | "graphql" - | "groovy" - | "hack" - | "haml" - | "handlebars" - | "hbs" - | "haskell" - | "hs" - | "hcl" - | "hjson" - | "hlsl" - | "html" - | "http" - | "imba" - | "ini" - | "properties" - | "java" - | "javascript" - | "js" - | "jinja-html" - | "jison" - | "json" - | "json5" - | "jsonc" - | "jsonl" - | "jsonnet" - | "jssm" - | "fsl" - | "jsx" - | "julia" - | "kotlin" - | "kusto" - | "kql" - | "latex" - | "less" - | "liquid" - | "lisp" - | "logo" - | "lua" - | "make" - | "makefile" - | "markdown" - | "md" - | "marko" - | "matlab" - | "mdx" - | "mermaid" - | "mojo" - | "narrat" - | "nar" - | "nextflow" - | "nf" - | "nginx" - | "nim" - | "nix" - | "objective-c" - | "objc" - | "objective-cpp" - | "ocaml" - | "pascal" - | "perl" - | "php" - | "plsql" - | "postcss" - | "powerquery" - | "powershell" - | "ps" - | "ps1" - | "prisma" - | "prolog" - | "proto" - | "pug" - | "jade" - | "puppet" - | "purescript" - | "python" - | "py" - | "r" - | "raku" - | "perl6" - | "razor" - | "reg" - | "rel" - | "riscv" - | "rst" - | "ruby" - | "rb" - | "rust" - | "rs" - | "sas" - | "sass" - | "scala" - | "scheme" - | "scss" - | "shaderlab" - | "shader" - | "shellscript" - | "bash" - | "sh" - | "shell" - | "zsh" - | "shellsession" - | "console" - | "smalltalk" - | "solidity" - | "sparql" - | "splunk" - | "spl" - | "sql" - | "ssh-config" - | "stata" - | "stylus" - | "styl" - | "svelte" - | "swift" - | "system-verilog" - | "tasl" - | "tcl" - | "tex" - | "toml" - | "tsx" - | "turtle" - | "twig" - | "typescript" - | "ts" - | "v" - | "vb" - | "cmd" - | "verilog" - | "vhdl" - | "viml" - | "vim" - | "vimscript" - | "vue-html" - | "vue" - | "vyper" - | "vy" - | "wasm" - | "wenyan" - | "文言" - | "wgsl" - | "wolfram" - | "xml" - | "xsl" - | "yaml" - | "yml" - | "zenscript" - | "zig"; + | 'abap' + | 'actionscript-3' + | 'ada' + | 'apache' + | 'apex' + | 'apl' + | 'applescript' + | 'ara' + | 'asm' + | 'astro' + | 'awk' + | 'ballerina' + | 'bat' | 'batch' + | 'beancount' + | 'berry' | 'be' + | 'bibtex' + | 'bicep' + | 'blade' + | 'c' + | 'cadence' | 'cdc' + | 'clarity' + | 'clojure' | 'clj' + | 'cmake' + | 'cobol' + | 'codeql' | 'ql' + | 'coffee' + | 'cpp' + | 'crystal' + | 'csharp' | 'c#' | 'cs' + | 'css' + | 'cue' + | 'cypher' | 'cql' + | 'd' + | 'dart' + | 'dax' + | 'diff' + | 'docker' | 'dockerfile' + | 'dream-maker' + | 'elixir' + | 'elm' + | 'erb' + | 'erlang' | 'erl' + | 'fish' + | 'fsharp' | 'f#' | 'fs' + | 'gdresource' + | 'gdscript' + | 'gdshader' + | 'gherkin' + | 'git-commit' + | 'git-rebase' + | 'glimmer-js' | 'gjs' + | 'glimmer-ts' | 'gts' + | 'glsl' + | 'gnuplot' + | 'go' + | 'graphql' + | 'groovy' + | 'hack' + | 'haml' + | 'handlebars' | 'hbs' + | 'haskell' | 'hs' + | 'hcl' + | 'hjson' + | 'hlsl' + | 'html' + | 'http' + | 'imba' + | 'ini' | 'properties' + | 'java' + | 'javascript' | 'js' + | 'jinja-html' + | 'jison' + | 'json' + | 'json5' + | 'jsonc' + | 'jsonl' + | 'jsonnet' + | 'jssm' | 'fsl' + | 'jsx' + | 'julia' + | 'kotlin' + | 'kusto' | 'kql' + | 'latex' + | 'less' + | 'liquid' + | 'lisp' + | 'logo' + | 'lua' + | 'make' | 'makefile' + | 'markdown' | 'md' + | 'marko' + | 'matlab' + | 'mdx' + | 'mermaid' + | 'mojo' + | 'narrat' | 'nar' + | 'nextflow' | 'nf' + | 'nginx' + | 'nim' + | 'nix' + | 'objective-c' | 'objc' + | 'objective-cpp' + | 'ocaml' + | 'pascal' + | 'perl' + | 'php' + | 'plsql' + | 'postcss' + | 'powerquery' + | 'powershell' | 'ps' | 'ps1' + | 'prisma' + | 'prolog' + | 'proto' + | 'pug' | 'jade' + | 'puppet' + | 'purescript' + | 'python' | 'py' + | 'r' + | 'raku' | 'perl6' + | 'razor' + | 'reg' + | 'rel' + | 'riscv' + | 'rst' + | 'ruby' | 'rb' + | 'rust' | 'rs' + | 'sas' + | 'sass' + | 'scala' + | 'scheme' + | 'scss' + | 'shaderlab' | 'shader' + | 'shellscript' | 'bash' | 'sh' | 'shell' | 'zsh' + | 'shellsession' | 'console' + | 'smalltalk' + | 'solidity' + | 'sparql' + | 'splunk' | 'spl' + | 'sql' + | 'ssh-config' + | 'stata' + | 'stylus' | 'styl' + | 'svelte' + | 'swift' + | 'system-verilog' + | 'tasl' + | 'tcl' + | 'tex' + | 'toml' + | 'tsx' + | 'turtle' + | 'twig' + | 'typescript' | 'ts' + | 'v' + | 'vb' | 'cmd' + | 'verilog' + | 'vhdl' + | 'viml' | 'vim' | 'vimscript' + | 'vue-html' + | 'vue' + | 'vyper' | 'vy' + | 'wasm' + | 'wenyan' | '文言' + | 'wgsl' + | 'wolfram' + | 'xml' + | 'xsl' + | 'yaml' | 'yml' + | 'zenscript' + | 'zig' ``` ::: ::: tip 🤓 注意 -尽量不要使用 `typora` 等编辑器编辑完 .md 文件后直接提交,因为它的渲染效果和本项目前端 md 渲染器 `vitepress markdown-it` 不一致。 +尽量不要使用 `typora` 等编辑器编辑完 .md文件后直接提交,因为它的渲染效果和本项目前端 md 渲染器 `vitepress markdown-it` 不一致。 在 `typora` 中编辑完成后,确认一下 .md 文件源代码是否为正常 Markdown 。 @@ -323,7 +230,7 @@ vitepress 框架要求,强制需要 nodejs v18.0 及以上版本。 本项目使用包管理器 npm。 ```bash -npm install +npm install npm run docs:dev #运行预览环境 ``` @@ -334,7 +241,7 @@ npm run docs:preview #预览线上环境 ## 图片放置指南 -图片放置在当前大章节 或者 模块章节的 `static` 目录下,然后在 md 文件中使用相对路径引用。 +图片放置在当前大章节的 `static` 目录下,然后在 md 文件中使用相对路径引用。 ```markdown ![](static/xxx.png) @@ -358,13 +265,12 @@ npm run docs:preview #预览线上环境 ## 如何使用 Git 和 Github -详见 [3.5 Git 和 Github](./2023旧版内容/3.编程思维体系构建/3.5git与github.md) +详见 [3.5 Git和Github](./2023旧版内容/3.编程思维体系构建/3.5git与github.md) ## Commit Message 规范 ::: tip 🐒 本项目没有强制使用 [commitlint](https://github.com/conventional-changelog/commitlint) ,但是建议遵循以下规范。 - > commitlint : 一个提交检查插件 ,可以在提交前检查 commit message 是否符合规范。 本项目选用的规范为 [@commitlint/config-conventional](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional)(基于 [Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines) 约定) @@ -388,13 +294,13 @@ type为commit的类型 build: 对项目构建或者依赖的改动 ci: CI 的修改 revert: revert 前一个 commit(撤销前一个commit) - + scope是文件名 / 模块名 / 影响的范围 例如 schoolSchedule - + subject为commit概述 建议符合 50 / 72 formatting - + 例 feat(JoinForm): add success submit tips 冒号后方可以使用中文描述 @@ -416,103 +322,93 @@ Fork 本仓库,然后在你的仓库中进行修改,修改完成后在本仓 ## Feature -1. Markdown 内支持 Latex 公式,格式为单行公式双 dollar 符号、单行公式单 dollar 符号。(单行公式需要换行才能解析)例如: +1. Markdown 内支持Latex公式,格式为单行公式双dollar符号、单行公式单dollar符号。(单行公式需要换行才能解析)例如: + ```latex + $行内公式\arccos{a}$ + ``` + > 会渲染成 $\arccos{a}$ + ```latex + $$单行公式\arcsin{b}$$ + ``` + > 会渲染成 + > + > $$\arcsin{b}$$ + ::: tip + Latex语法在线编辑器 https://www.latexlive.com + ::: - ```latex - $行内公式\arccos{a}$ - ``` - - > 会渲染成 $\arccos{a}$ - - ```latex - $$单行公式\arcsin{b}$$ - ``` - - > 会渲染成 - > - > $$\arcsin{b}$$ - > ::: tip - > Latex 语法在线编辑器 https://www.latexlive.com - > ::: - -2. 支持 Mermaid 流程图,格式如下 - - ````markdown - ```mermaid - graph TD; - A-->B; - A-->C; - B-->D; - C-->D; - ``` - ```` - - 会渲染成 - - ```mermaid - graph TD; - A-->B; - A-->C; - B-->D; - C-->D; - ``` - - :::tip - 语法自查 https://mermaid.js.org - ::: +2. 支持Mermaid流程图,格式如下 + ```markdown + ```mermaid + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + ``` + ``` + 会渲染成 + ```mermaid + graph TD; + A-->B; + A-->C; + B-->D; + C-->D; + ``` + :::tip + 语法自查 https://mermaid.js.org + ::: 3. 代码分块 - ```` - ::: code-group + ``` + ::: code-group - ```sh [npm] - $ npm install -D vitepress - ``` + ```sh [npm] + $ npm install -D vitepress + ``` - ```sh [pnpm] - $ pnpm add -D vitepress - ``` + ```sh [pnpm] + $ pnpm add -D vitepress + ``` - ```sh [yarn] - $ yarn add -D vitepress - ``` + ```sh [yarn] + $ yarn add -D vitepress + ``` - ::: - ```` + ::: + ``` + ::: code-group - ::: code-group + ```sh [npm] + $ npm install -D vitepress + ``` - ```sh [npm] - $ npm install -D vitepress - ``` + ```sh [pnpm] + $ pnpm add -D vitepress + ``` - ```sh [pnpm] - $ pnpm add -D vitepress - ``` + ```sh [yarn] + $ yarn add -D vitepress + ``` - ```sh [yarn] - $ yarn add -D vitepress - ``` + ::: - ::: 4. 图片缩放 图片默认支持缩放,鼠标悬浮图片上方会出现放大镜图标,点击即可放大图片。 -如果不想让图片缩放,可以在图片 class 内后添加 `no-zoom` 参数。 +如果不想让图片缩放,可以在图片class内后添加 `no-zoom` 参数。 markdown 的使用方式如下 ```markdown # 默认(支持缩放) - ![](static/xxx.png) ``` ```markdown # 不支持缩放 - ![](static/xxx.png){.no-zoom} ``` From 66366931413652b7552f3d2289a51be7c5b71ddb Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 23:01:16 +0800 Subject: [PATCH 10/11] docs: propose code of naming document --- CONTRIBUTING.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index fca6c30..ea8a8cf 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -25,6 +25,52 @@ - 网站页面设计 - 在各种媒体、博客文章、群内宣传 HDU-CS-WIKI +## 文档命名 + +1. 对于 md 文件,请命名为 `数字与小数点前缀+文档标题` 的格式 + + ``` + 1.1.2 新内容.md + 2. 序言.md + ``` + +2. 如果您需要开启新的小章节模块,请新建一个文件夹,文件夹的命名格式与 md 文件类似,为 `数字与小数点前缀+模块名` + + ``` + 2.2 模块 2 + ``` + +3. 不论是 md 文件还是文件夹,请不要使用字母或其他特殊符号作为前缀 + +一个合理的文档结构如下: + +``` +. +└─ 1.第一章 +   ├── 1.1 模块 1 +   │   ├── 1.1.10 JavaScript.md +   │   ├── 1.1.11 Lua.md +   │   ├── 1.1.12 Lisp.md +   │   ├── 1.1.1 Ruby.md +   │   ├── 1.1.2 Java.md +   │   ├── 1.1.3 C++.md +   │   ├── 1.1.4 C.md +   │   ├── 1.1.5 Math.md +   │   ├── 1.1.6 Matlab.md +   │   ├── 1.1.7 React.md +   │   ├── 1.1.8 Jupyter.md +   │   └── 1.1.9 Vue.md +   ├── 1.2 模块 2 +   │   ├── 1.2.1 C#.md +   │   ├── 1.2.2 Python.md + │ └── static +   ├── 1.3 结语.md +   ├── 1. 序言.md +   └── static +``` + +static 文件夹用于存放您的静态资源,如图片,您也可以在模块文件夹下放置新的 static 文件夹,方便引用资源 + ## 文档风格 1. 使用 Markdown 编写文档,文档格式参考 Markdown 语法。 From a4a7cc74d52619910141d1f30fab20321d41f72f Mon Sep 17 00:00:00 2001 From: kiameow Date: Mon, 29 Jul 2024 23:09:00 +0800 Subject: [PATCH 11/11] docs: add documentation for generateSidebar --- .vitepress/sidebar.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.vitepress/sidebar.js b/.vitepress/sidebar.js index f33d81d..fec8ad7 100644 --- a/.vitepress/sidebar.js +++ b/.vitepress/sidebar.js @@ -576,6 +576,18 @@ export function generateSidebarBasic(dir, excludeDir = [], maxDepth, currentDept return sidebar.filter(Boolean); } +/** + * Generates a sidebar configuration for VitePress. + * + * @param {string} dir - The directory to generate the sidebar from. + * @param {Object} [options] - Optional parameters. + * @param {string[]} [options.excludeDir=['static']] - Directories to exclude from the sidebar. + * @param {string} [options.previousLevel='/'] - Link to the previous level. + * @param {string} [options.previousLevelDescription='返回上一层'] - Description for the previous level link. + * @param {string} [options.topLevelName] - Name for the top level of the sidebar. + * @param {number} [options.maxDepth=5] - Maximum depth of directories to include. + * @returns {Object[]} Sidebar configuration array. + */ export function generateSidebar( dir, {