最近工作中需要对项目写一个开发文档,突然有一天新同事过来找到我,说看着我的文档其他都好,就是文件的目录结构让他比较模糊,说能不能写进文档中。那肯定没问题么,说干就干,但怎么写又是个问题,看来看去还得是树形结构更直观、更容易理解。
但在网上找了一圈,都让装插件,搞的好麻烦。俗话说:“不服就造”,说干就干,本文将介绍如何使用Node.js生成文件夹树形结构,并提供了一个简单的方法示例。
步骤
- 导入Node.js的fs模块,该模块提供了文件系统相关的功能。
- 定义一个名为
generateTree的函数,用于生成文件夹树形结构。该函数接受四个参数:rootPath表示根路径,padding表示缩进字符,level表示展示的层级数,excludeFiles表示需要排除的文件名。 - 使用
fs.readdirSync方法读取指定路径下的文件和文件夹列表,并通过 withFileTypes: true 参数获取每个文件和文件夹的详细信息。 - 遍历文件和文件夹列表,根据是否为最后一个元素确定前缀字符。使用
console.log方法打印出当前文件或文件夹的名称,并添加缩进字符。 - 如果当前元素是文件夹且层级数大于0,则递归调用
generateTree函数,传入当前文件夹的路径作为新的根路径,更新缩进字符和层级数。 - 在脚本中调用
generateTree函数,传入根路径、空字符串作为初始缩进字符,以及希望展示的层级数。
代码示例
const fs = require("fs");
function generateTree(rootPath, padding = "", level = 0, excludeFiles = []) {
const files = fs.readdirSync(rootPath, { withFileTypes: true });
files.forEach((file, index) => {
const isLast = index === files.length - 1;
const prefix = isLast ? "└── " : "├── ";
const fileName = file.name;
console.log(padding + prefix + fileName);
if (!excludeFiles.includes(fileName)) {
if (file.isDirectory() && level > 0) {
const newPadding = padding + (isLast ? " " : "│ ");
generateTree(
rootPath + "/" + fileName,
newPadding,
level - 1,
excludeFiles
);
}
}
});
}
const excludeFiles = ["node_modules", ".git", "yarn.lock"]; // 添加你想要排除的文件名
generateTree("./", "", 2, excludeFiles);
结果
运行脚本后,将会在控制台输出类似以下的文件夹树形结构:
根目录
├── 文件夹1
│ └── 文件1
└── 文件夹2
└── 文件2
结论
使用Node.js生成文件夹树形结构可以帮助我们更好地理解和组织文件。你可以根据自己的需求修改代码来生成不同层级的文件夹树形结构。