-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate.js
56 lines (46 loc) · 1.42 KB
/
create.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
const fs = require('fs');
const path = require('path');
// 函数用于遍历目录下的所有文件
function traverseDirectory(dir, rootDir) {
const companies = {};
// 获取目录下的所有文件和文件夹
const items = fs.readdirSync(dir);
for (const item of items) {
if (item === '.git' || item === 'web' || item.endsWith('.md')) {
// 如果是 .git 或者 web 目录,则跳过
continue;
}
const itemPath = path.join(dir, item);
const relativePath = path.relative(__dirname, itemPath);
const stats = fs.statSync(itemPath);
if (stats.isDirectory()) {
// 如果是文件夹,则递归遍历
const software = traverseDirectory(itemPath, rootDir);
companies[item] = software;
} else {
if (dir !== rootDir) {
// 如果是根目录下的单个文件,则跳过
if (!companies['_files']) {
companies['_files'] = [];
}
companies['_files'].push({
path: relativePath,
name: item.split('.')[0],
type: item.split('.')[1],
});
}
}
}
return companies;
}
// 遍历当前目录
const rootDir = path.join(__dirname, 'imgs');
const result = traverseDirectory(rootDir, rootDir);
// 将结果写入config.json文件
const outputDir = __dirname;
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir);
}
const configPath = path.join(outputDir, 'config.json');
fs.writeFileSync(configPath, JSON.stringify(result, null, 2));
console.log('config.json 文件已生成');