UNPKG

slidev-addon-sm

Version:

slidev-addon slidev sm

103 lines (88 loc) 3.03 kB
#!/usr/bin/env node import { link } from "fs"; import { $, cd, fs, path } from "zx"; const PAGE_DIR = "./pages"; const baseName = (name) => { let t = name.split("-"); if (t.length > 1) return t[1]; return name; }; try { //检索pages下的md文件,并以序号排序 let subDirs = fs.readdirSync(PAGE_DIR); subDirs.forEach((subDir) => { let subDirPath = PAGE_DIR + "/" + subDir; let subFiles = fs .readdirSync(subDirPath) .filter((t) => path.extname(t) === ".md"); subFiles.forEach((subFile) => { let subFileName = subFile.toString(); if (subFileName === "README.md") return; if (subFileName.includes("_publish.md")) return; if (subFileName.includes("作业")) return; if (subFileName.includes("小测")) return; let found = false; let idx = 1; let dataArray = new Array(); let firstLine = true; let hadlayout = false; let filePath = subDirPath + "/" + subFileName; let orderData = fs.readFileSync(filePath); orderData .toString() .split("\n") .forEach((data) => { let dataStr = data.toString().trim(); // 每页的头也加上 if (firstLine) { if (dataStr.trim().length == 0) { return; } if (!dataStr.trim().slice(0, 3).includes("---")) { dataArray[idx++] = "---"; dataArray[idx++] = "layout: SmLogoTRLayout"; dataArray[idx++] = "---\n"; let subFileBaseName = baseName(subFileName); subFileBaseName = subFileBaseName.replace(".md", ""); if (!dataStr.includes("##")) { dataArray[idx++] = "## " + subFileBaseName + "\n"; dataArray[idx++] = '<Toc maxDepth="3" minDepth="3"/>\n'; } dataArray[idx++] = dataStr; firstLine = false; return; } firstLine = false; } if (found) { if (!dataStr.includes("layout") && !hadlayout) { dataArray[idx++] = "layout: SmLogoTRLayout"; dataArray[idx++] = "---\n"; found = false; hadlayout = false; return; } else { if (dataStr.includes("layout")) { hadlayout = true; } dataArray[idx++] = dataStr; if (dataStr.slice(0, 3).includes("---")) { found = false; hadlayout = false; } } return; } if (dataStr.slice(0, 3).includes("---")) { dataArray[idx++] = dataStr; found = true; } else { dataArray[idx++] = dataStr; } }); fs.writeFileSync(filePath, dataArray.join("\n").trim()); }); }); } catch (err) { console.error(err); }