我在 github上有个维护时间比较长的 repository,开始时只有几个文件,后来文件数目逐渐增多,期间整理了好几次,现在已经整理成了好几个文件夹了,有时候想找某个文件的时候,但是不确定到底在哪个文件夹里面,于是就凭感觉一个一个文件夹试过去,层级少点还好,但是层级一多,就算是明确知道在哪个文件夹里,一层层点进去也要点好几次
于是心中一动,就想着把当前仓库的目录结构列出来,直接写在 README.md
文件上,想看哪个文件直接点,一次点击即可,手写目录肯定是不太友好的,因为我可能频繁增删文件,甚至是再次整理文件结构,而且也不具备通用性,万一哪天又想把另外一个仓库也列出目录结构,那么又要手写一遍,所以最好写个代码程序来帮我完成这种工作
先看效果图:
递归获取所有文件路径
目标是输出目录的层级结构,那么首先要把当前仓库根目录下所有文件的路径获取到,思路很清晰的,先用 fs.readdirSync
读取目录,并且递归循环子目录,直到最后一层
function getDirStruct(basePath = __dirname) {
const files = fs.readdirSync(basePath)
files.forEach(file => {
// 处理先不要显示的文件
if (excludeFile.indexOf(file) !== -1 || excludePrefix.some(pre => file.indexOf(pre) === 0)) return
const fullPath = path.resolve(basePath, file)