nodejs编写docsify自动遍历当前目录下md文档生成_sidebar.md
1. 在docsify文档目录(比如:docs)下,创建genSidebar.js,拷贝下面的代码到genSidebar.js中保存;
var sidebarTxt='* [首页](/)\n'; var path = require('path'); var curPath = path.resolve('./'); function walkSync(currentDirPath, prefixBlank, callback) { var fs = require('fs'), path = require('path'); fs.readdirSync(currentDirPath).forEach(function (name) { var filePath = path.join(currentDirPath, name); var stat = fs.statSync(filePath); if (stat.isFile()) { callback(filePath, stat); } else if (stat.isDirectory() && ".git"!=path.basename(filePath) && '_' != path.basename(filePath).substr(0,1)) { sidebarTxt += prefixBlank +'* ' +path.basename(filePath)+'\n'; walkSync(filePath, prefixBlank+' ', callback); } }); } walkSync(curPath,'', function(filePath, stat) { if(".md" == path.extname(filePath).toLowerCase() && '_' != path.basename(filePath).substr(0,1) && 'README.md' != path.basename(filePath)){ var relativeFilePath = filePath.substr(curPath.length); //console.log("file:"+ path.basename(filePath).slice(1)); var itemText = relativeFilePath.substr(1, relativeFilePath.length-4); while(itemText.indexOf('/')>0){ itemText = itemText.substr(itemText.indexOf('/')+1); sidebarTxt += ' '; } sidebarTxt += '- ['+itemText+']('+relativeFilePath+')\n'; } //console.log("file:"+ +path.extname(filePath)); }); var path = require('path'); var fs = require('fs'); fs.copyFile(path.resolve('./')+"/_sidebar.md",path.resolve('./')+"/_sidebar.md.bak",function(err){ if(err) throw new Error('something wrong was happended') }); //console.log(path.resolve('./')+"/_sidebar.md"); console.log(sidebarTxt); fs.writeFile(path.resolve('./')+'/_sidebar.md', sidebarTxt,function(err){ if(err){ console.error(err); } });
2. 执行下面的node命令即可生成:_sidebar.md
node genSidebar.js