-
Notifications
You must be signed in to change notification settings - Fork 111
/
index.js
57 lines (49 loc) · 1.55 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
const fs = require('fs');
const path = require('path');
// 指定要扫描的目录
const directoryPath = './docs';
// 递归读取目录中的所有 Markdown 文件
function readDirectory(directory) {
fs.readdir(directory, (err, files) => {
if (err) {
return console.log('无法扫描目录: ' + err);
}
files.forEach(file => {
const filePath = path.join(directory, file);
fs.stat(filePath, (err, stats) => {
if (err) {
return console.log('无法获取文件信息: ' + err);
}
if (stats.isDirectory()) {
// 如果是目录,递归读取
readDirectory(filePath);
} else if (path.extname(file) === '.md') {
// 如果是 Markdown 文件,处理文件内容
processMarkdownFile(filePath);
}
});
});
});
}
// 处理 Markdown 文件内容
function processMarkdownFile(filePath) {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
return console.log('无法读取文件: ' + err);
}
// 使用正则表达式匹配 <https://ryanc.cc> 形式的链接
const updatedData = data.replace(/<https:\/\/[^\s]+>/g, match => {
const url = match.slice(1, -1); // 去掉尖括号
return `[${url}](${url})`;
});
// 将更新后的内容写回文件
fs.writeFile(filePath, updatedData, 'utf8', err => {
if (err) {
return console.log('无法写入文件: ' + err);
}
console.log(`已处理文件: ${filePath}`);
});
});
}
// 开始扫描目录
readDirectory(directoryPath);