slidev-addon-sm
Version:
slidev-addon slidev sm
64 lines (44 loc) • 1.61 kB
JavaScript
// 将slidev的格式转为常规的markdown
import { $, cd, fs, path } from 'zx'
const args = process.argv;
const cmdPath = args[1];
const doRemoveSm = (str, components) => {
for(let i=0; i<components.length; i++) {
//<Smxxx></Smxxx>
str = str.replace("<"+components[i]+">", "");
str = str.replace("</"+components[i]+">", "");
//<Smxxx />
str = str.replace("<"+components[i]+" />", "");
}
return str;
};
const doRemoveFormatter = (str) => {
if(str === "---") return "";
else if (str.contains("layout: ")) return "";
else if (str.contains("::left::")) return "";
else if (str.contains("::right::")) return "";
return str;
};
try {
fs.mkdirSync("./nslidev");
let smcomponents = fs.readdirSync(cmdPath+'/../components/');
for(let i=0; i<smcomponents.length; i++) {
smcomponents[i].replace(".vue", "");
}
//检索pages下的md文件,并以序号排序
let files = fs.readdirSync('./pages/');
files.sort(customSort);
files.forEach(element => {
fs.readFile('./pages/'+element, (err, data) => {
let lines = data.toString().split('\n');
for(let i=0; i<lines.length; i++) {
lines[i] = doRemoveSm(lines[i], smcomponents);
lines[i] = doRemoveFormatter(lines[i], smcomponents);
}
fs.writeFileSync('./nslidev/'+element, lines.join('\n'));
});
});
} catch (err) {
console.error(err);
}