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 建立目录树脚本的主要内容,如果未能解决你的问题,请参考以下文章

docsify简单教程

使用docsify并定制以使它更强大

docsify笔记 01:快速入门

docsify笔记 01:快速入门

docsify笔记 02:主题插件与其它个性化设置

docsify笔记 02:主题插件与其它个性化设置