-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
68 lines (58 loc) · 1.41 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
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const {walk} = require('./utils/walk');
const {createREADME, writeTitle, writeContent, writeItem, writeLinebreak} = require('./utils/write');
const options = require('./utils/config');
const dir = path.resolve();
const readmeFile = path.join(dir, '/README.md');
createREADME(readmeFile);
writeTitle(readmeFile, options.title, 1);
/**
* 将文件夹映射为标题
* @param dir
* @param level
* @returns {boolean} 返回真值以执行后面的函数
*/
function mapDir(dir, level) {
writeTitle(readmeFile, dir, level, true);
return true;
}
/**
* 将文件映射为条目
* @param file
* @returns {boolean} 返回真值以执行后面的函数
*/
function mapFile(file) {
writeItem(readmeFile, file);
return true;
}
/**
* 写前置或后置的附加内容
* @param item
*/
function addContent(item) {
if (item.title && item.level)
writeTitle(readmeFile, item.title, item.level);
if (item.content)
writeContent(readmeFile, item.content);
}
/**
* 写前置的附加内容
*/
if (options.prefix) {
options.prefix.forEach(addContent);
}
/**
* 文件和目录遍历
*/
let topLevel = options.startLevel || 2;
walk(dir, mapDir, mapFile, topLevel);
writeLinebreak(readmeFile);
/**
* 写后置的附加内容
*/
if (options.append) {
options.append.forEach(addContent);
}
console.log('README.md 文件构建成功!');