docsify 建立目录树脚本
Posted 霜序0.2℃
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docsify 建立目录树脚本相关的知识,希望对你有一定的参考价值。
docsify是轻量级的文档构建工具,无需生成html就能在网页展示markdown
我想着,将所有的markdown弄到一起,并用docsify
生成网站,用github pages
预览
但是找了半天好像没有自动生成目录树(并附带链接)的插件,找半天找到了gitee上面有人自己写的Docsify 笔记博客 : 自动生成sidebar 树状目录
然后我跑了之后不符合我的要求,在上面改…但是写完之后才发现,issues里面有人讲了改法,尴尬…
下面是我改的
var sidebarTxt = '- [**书不尽意**](/README.md)\\n';
var path = require('path');
var curPath = path.resolve('./');
var baseDirArr = [];
function walkSync(currentDirPath, 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() && !filePath.includes(".git")) //是目录但不是.git
walkSync(filePath, callback);
);
walkSync(curPath, function (filePath, stat)
if (".md" == path.extname(filePath).toLowerCase()//后缀是.md
&& "_" != path.basename(filePath).substr(0, 1)
&& path.basename(filePath).includes(`.md`))
var relativeFilePath = filePath.substr(curPath.length + 1);
if (relativeFilePath == path.basename(filePath)) //如果最后的string和原来的一样
return;
var relativeFilePathArr = relativeFilePath.split('\\\\')//这里可以看情况改
for (var i = 0; i < relativeFilePathArr.length; i++)
if (baseDirArr[i] == relativeFilePathArr[i]) //相同就continue
continue;
baseDirArr[i] = relativeFilePathArr[i]//记录
for (var j = 0; j < i; j++)
sidebarTxt += ' '
if (i != relativeFilePathArr.length - 1) //如果不是md文件就输出文件夹
sidebarTxt += '- **' + relativeFilePathArr[i] + '**\\n';
if (i == relativeFilePathArr.length - 1) //输入md文件夹
sidebarTxt += '- [' + path.basename(relativeFilePathArr[i],".md") + '](/' + relativeFilePath + ')\\n';
);
var path = require('path');
var fs = require('fs');
console.log(sidebarTxt);
fs.writeFile(path.resolve('./') + '/_sidebar.md', sidebarTxt, function (err)
if (err)
console.error(err);
);
以上是关于docsify 建立目录树脚本的主要内容,如果未能解决你的问题,请参考以下文章