-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathprebuild.js
48 lines (45 loc) · 1.39 KB
/
prebuild.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
const glob = require("glob");
const fs = require("fs-extra");
const path = require("path");
(async () => {
const vues = await getFiles("src/views/**/*.vue");
const mds = await getFiles("docs/**/*.md");
const target = "public/markdown/";
let list = vues.map(vue => {
let componentName = vue.replace("src/views/", "").replace(".vue", "");
let md = mds.find(md => md.replace("docs/", "").replace(".md", "") == componentName);
if (md) {
return {
vue,
md,
componentName
};
} else {
console.log("[info] " + componentName + "组件 没有对应文档");
return "";
}
});
list.forEach(item => {
if (item) {
const { vue, md, componentName } = item;
let vueContent = fs.readFileSync(vue).toString();
let mdContent = fs.readFileSync(md).toString();
let mergeContent = mdContent + "\r\n```html\r\n" + vueContent + "\r```\r\n";
let filePath = path.join(target, componentName) + ".md";
let floderpath = path.dirname(filePath)
if(!fs.existsSync(floderpath)) fs.mkdirSync(floderpath,{ recursive: true })
fs.writeFileSync(filePath, mergeContent)
}
});
function getFiles(params) {
return new Promise((resolve, reject) => {
glob(params, {}, function (err, files) {
if (err) {
reject(err);
} else {
resolve(files);
}
});
});
}
})();