nodejs递归遍历md文件

我的新版博客打算使用 react-static + markdown ,所以写了个递归遍历 md 文件的方法。

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
var id = 0;

function readFileList(dir, filesList = []) {
// 列出所有文件或目录
const files = fs.readdirSync(dir);
// 遍历
files.forEach((item, index) => {
// 计算绝对路径
var fullPath = path.join(dir, item);
// 获取状态
const stat = fs.statSync(fullPath);
// 如果是目录
if (stat.isDirectory()) {
// 递归
readFileList(path.join(dir, item), filesList);
} else {
// 否则是文件 判断文件后缀名
if (item.slice(-3).toLowerCase() == ".md") {
// 文件分隔符
fullPath = fullPath.replace(/\\/g, "/");
// 分割
var path_sp = fullPath.split("/");
// 添加到列表
filesList.push({
id: id++,
userId: 1,
title: item.slice(0, -3),
year: path_sp[path_sp.length - 3],
month: path_sp[path_sp.length - 2],
path: fullPath,
body: fs.readFileSync(fullPath).toString(),
});
}
}
});
return filesList;
}
// 实参
var blog_md_list = [];
// 递归遍历md文件
readFileList(path.join(__dirname, "public", "md"), blog_md_list);