const fs = require('fs');
var path = require('path');
let marked = require('marked');
let package = require("../package.json");
if (!marked) {
console.log('you need npm i marked -D!');
}
//插入 默认的 script 标签
let jsroot = ``;
/**
*
* @param {text} sorce 替换 头部信息
*/
function insert(sorce) {
var insert = sorce.indexOf('');
if (insert > -1) {
return sorce.substring(0, insert) + '请使用手机扫码体验' + sorce.substring(insert, sorce.length);
} else {
return sorce
}
}
///创建一个空文件
/**
*
* @param {string} output 输出路径
* @param {string} sorce 文件源
* @param {boole} ishasCode 是否需要二维码
*/
function createdFile(output, sorce, ishasCode) {
var pathSrc = output;
if (!ishasCode) {
var res = insert(sorce);
} else {
var res = sorce;
}
fs.open(pathSrc, "w+", (err, fd) => {
var bufs = `
'
+ (escaped ? code : escape(code, true))
+ '';
}
if (lang === 'html') {
code = code.replace(/@latest/g, '@' + package.version)
}
return '' + lang + ''
+ (escaped ? code : escape(code, true))
+ '\n';
};
marked.setOptions({
renderer: rendererMd,
highlight: function (code) {
return require('highlight.js').highlightAuto(code).value;
},
tables: true
}, res => {
})
fs.readdir(filePath, (res, files) => {
if (!res) {
files.forEach(filename => {
//获取当前文件绝对路径
let filedir = path.join(filePath, filename);
//文件写入
fs.stat(filedir, (err, stats) => {
if (!err) {
if (stats.isDirectory()) {
fileDisplay(filedir, outPath, nohead)
} else {
//判断文件类型是否是md文件
if (/.md$/.test(filedir)) {
//文件读取
fs.readFile(filedir, 'utf-8', (err, data) => {
let html = marked(data);
let filedirarry = filedir.split('.');
let fdurl = filedirarry[0];
let fileNames = [];
for (let i = fdurl.length - 1; i > -1; i--) {
if (/[a-zA-Z]/.test(fdurl[i])) {
fileNames.push(fdurl[i])
} else {
fileNames.push('-')
}
}
let newName = fileNames.reverse().join('').split('-');
let resName = '';
if (newName.indexOf('doc') > -1) {
resName = newName[newName.length - 2]
} else {
resName = newName[newName.length - 1]
}
createdFile(outPath + '/' + resName + '.vue', html, nohead)
});
//文件监听
let fsWatcher = fs.watchFile(filedir, {
persistent: true,
persistent: 1000
}, (err, data) => {
// console.log(err,data,filedir);
fs.readFile(filedir, 'utf-8', (err, data) => {
let html = marked(data);
let filedirarry = filedir.split('/');
let fileNames = filedirarry[filedirarry.length - 2];
createdFile(outPath + '/' + fileNames + '.vue', html, nohead)
});
});
}
}
}
})
})
}
})
}
//md转 其他格式类型
function MdToHtml(commomOption) {
// commomOption = options;
//获取所有的md 转html的结果
fileDisplay(commomOption.entry, commomOption.output, commomOption.nohead);
}
MdToHtml.prototype.apply = function (compiler) {
// console.log(compiler,'lls')
};
module.exports = MdToHtml;