Skip to content

Commit faba508

Browse files
committed
apply new theme
1 parent 65d5112 commit faba508

5 files changed

Lines changed: 210 additions & 97 deletions

File tree

.github/workflows/deploy-page.yaml

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: Java CI with Maven and Docker
2+
3+
on:
4+
workflow_dispatch:
5+
push:
6+
branches:
7+
- master
8+
9+
jobs:
10+
build:
11+
runs-on: ubuntu-latest
12+
13+
steps:
14+
- name: Checkout code
15+
uses: actions/checkout@v4
16+
- name: Use Node.js
17+
uses: actions/setup-node@v4
18+
with:
19+
node-version: '22.x'
20+
21+
- name: generate sidebar
22+
run: node .\generate-sidebar.js
23+
- name: Upload artifact
24+
uses: actions/upload-pages-artifact@v4
25+
deploy:
26+
environment:
27+
name: github-pages
28+
url: ${{steps.deployment.outputs.page_url}}
29+
runs-on: ubuntu-latest
30+
needs: build
31+
steps:
32+
- name: Deploy to GitHub Pages
33+
id: deployment
34+
uses: actions/deploy-pages@v4
35+

_sidebar.md

Lines changed: 0 additions & 89 deletions
This file was deleted.

generate-sidebar.js

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
const fs = require('fs').promises;
2+
const path = require('path');
3+
4+
// 命令行参数处理:获取要扫描的文件夹路径,默认是当前目录
5+
const targetDir = process.argv[2] || process.cwd();
6+
7+
/**
8+
* 递归扫描目录,收集符合条件的Markdown文件
9+
* @param {string} dir - 要扫描的目录
10+
* @param {string} baseDir - 基础目录,用于计算相对路径
11+
* @returns {Promise<Array>} - 文件结构数组
12+
*/
13+
async function scanDirectory(dir, baseDir = dir) {
14+
const results = [];
15+
const entries = await fs.readdir(dir, { withFileTypes: true });
16+
17+
for (const entry of entries) {
18+
const fullPath = path.join(dir, entry.name);
19+
const relativePath = path.relative(baseDir, fullPath);
20+
21+
// 忽略以_开头的文件和目录
22+
if (entry.name.startsWith('_') || entry.name.startsWith('README')) {
23+
continue;
24+
}
25+
26+
if (entry.isDirectory()) {
27+
// 递归处理子目录
28+
const subDirFiles = await scanDirectory(fullPath, baseDir);
29+
if (subDirFiles.length > 0) {
30+
results.push({
31+
type: 'directory',
32+
name: entry.name,
33+
path: relativePath,
34+
children: subDirFiles
35+
});
36+
}
37+
} else if (entry.isFile() && path.extname(entry.name) === '.md') {
38+
// 处理Markdown文件
39+
results.push({
40+
type: 'file',
41+
name: path.basename(entry.name, '.md'), // 去除.md扩展名
42+
path: relativePath
43+
});
44+
}
45+
}
46+
47+
// 排序逻辑:
48+
// 1. 文件夹(directory)排在文件(file)前面
49+
// 2. 同一类型的按名称首字母顺序排序(支持国际化)
50+
return results.sort((a, b) => {
51+
// 先按类型排序:文件夹在前,文件在后
52+
if (a.type !== b.type) {
53+
return a.type === 'directory' ? -1 : 1;
54+
}
55+
56+
// 再按名称首字母排序,使用localeCompare确保正确的字母顺序
57+
return a.name.localeCompare(b.name, undefined, {
58+
sensitivity: 'base', // 不区分大小写
59+
numeric: true // 正确处理包含数字的名称
60+
});
61+
});
62+
}
63+
64+
/**
65+
* 将文件结构转换为docsify侧边栏格式的Markdown
66+
* @param {Array} items - 文件结构数组
67+
* @param {number} level - 层级,用于生成缩进
68+
* @returns {string} - 侧边栏Markdown内容
69+
*/
70+
function generateSidebarMarkdown(items, level = 0) {
71+
const indent = ' '.repeat(level);
72+
let markdown = '';
73+
74+
for (const item of items) {
75+
if (item.type === 'directory') {
76+
// 目录项
77+
markdown += `${indent}- [${item.name}](${item.path}/)\n`;
78+
// 递归处理子项,层级+1
79+
markdown += generateSidebarMarkdown(item.children, level + 1);
80+
} else if (item.type === 'file') {
81+
// 文件项
82+
markdown += `${indent}- [${item.name}](${item.path})\n`;
83+
}
84+
}
85+
86+
return markdown;
87+
}
88+
89+
/**
90+
* 主函数:扫描目录并生成侧边栏文件
91+
*/
92+
async function main() {
93+
try {
94+
console.log(`开始扫描目录: ${targetDir}`);
95+
96+
// 扫描目录获取文件结构
97+
const fileStructure = await scanDirectory(targetDir);
98+
99+
// 生成侧边栏Markdown内容
100+
const sidebarContent = generateSidebarMarkdown(fileStructure);
101+
102+
// 输出文件路径
103+
const outputPath = path.join(process.cwd(), '_sidebar.md');
104+
105+
// 写入文件
106+
await fs.writeFile(outputPath, sidebarContent);
107+
108+
console.log(`侧边栏已生成: ${outputPath}`);
109+
console.log('生成完成!');
110+
} catch (error) {
111+
console.error('生成侧边栏时出错:', error.message);
112+
process.exit(1);
113+
}
114+
}
115+
116+
// 执行主函数
117+
main();
118+

index.html

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,72 @@
55
<meta name="viewport" content="width=device-width,initial-scale=1">
66
<meta charset="UTF-8">
77
<title>黑羽的个人笔记</title>
8-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/css/theme-defaults.css">
8+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify@4/themes/vue.css"/>
9+
<!-- 文件夹样式 -->
10+
<link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/sidebar-folder.min.css"/>
11+
<style>
12+
.sidebar .sidebar-nav {
13+
padding-left: 10px;
14+
}
15+
</style>
916
</head>
1017
<body>
1118
<div id="app">加载中</div>
1219
<script>
1320
window.$docsify = {
21+
name: '黑羽的个人笔记',
1422
// 加载 _sidebar.md
1523
loadSidebar: true,
1624
// 加载 _navbar.md
1725
loadNavbar: true,
18-
subMaxLevel: 4
26+
// 页面右侧toc
27+
toc: {
28+
tocMaxLevel: 4,
29+
target: "h1,h2,h3,h4,h5,h6"
30+
},
1931
}
2032
</script>
21-
<script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
22-
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/zoom-image.min.js"></script>
23-
<script src="//cdn.jsdelivr.net/npm/docsify-copy-code/dist/docsify-copy-code.min.js"></script>
24-
<script src="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>
33+
<!-- Required -->
34+
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/docsify.min.js"></script>
35+
<!--<script src="https://cdn.jsdelivr.net/npm/docsify-themeable@0/dist/js/docsify-themeable.min.js"></script>-->
36+
37+
<!-- Recommended -->
38+
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/search.js"></script>
39+
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/zoom-image.min.js"></script>
40+
41+
<!-- 代码高亮 https://cdn.jsdelivr.net/npm/prismjs@1/components/ -->
42+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/index.js"></script>
43+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-javascript.min.js"></script>
44+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-sql.min.js"></script>
45+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-bash.min.js"></script>
46+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-python.min.js"></script>
47+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-cmake.min.js"></script>
48+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-java.min.js"></script>
49+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-csharp.min.js"></script>
50+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-docker.min.js"></script>
51+
<script src="//cdn.jsdelivr.net/npm/prismjs@1/components/prism-powershell.min.js"></script>
52+
53+
54+
<!-- 多tab支持 -->
55+
<script src="https://cdn.jsdelivr.net/npm/docsify-tabs@1/dist/docsify-tabs.min.js"></script>
56+
57+
<!-- 代码复制 -->
58+
<script src="https://cdn.jsdelivr.net/npm/docsify-copy-code@2/dist/docsify-copy-code.min.js"></script>
59+
60+
<!-- 底部 上一页下一页 -->
61+
<script src="https://cdn.jsdelivr.net/npm/docsify-pagination@2/dist/docsify-pagination.min.js"></script>
62+
63+
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/external-script.min.js"></script>
64+
65+
<script src="https://cdn.jsdelivr.net/npm/docsify@4/lib/plugins/ga.min.js"></script>
66+
67+
<!-- 侧边栏目录折叠 -->
68+
<script src="https://cdn.jsdelivr.net/npm/docsify-sidebar-collapse/dist/docsify-sidebar-collapse.min.js"></script>
69+
70+
<!-- 页面右侧 TOC -->
71+
<script src="https://cdn.jsdelivr.net/npm/docsify-plugin-toc@1.1.0/dist/docsify-plugin-toc.min.js"></script>
72+
73+
<!-- emoji -->
74+
<script src="//cdn.jsdelivr.net/npm/docsify/lib/plugins/emoji.min.js"></script>
2575
</body>
26-
</html>
76+
</html>

java/_sidebar.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)