Node.js实战:生成漂亮的文件夹树形结构

486 阅读2分钟

最近工作中需要对项目写一个开发文档,突然有一天新同事过来找到我,说看着我的文档其他都好,就是文件的目录结构让他比较模糊,说能不能写进文档中。那肯定没问题么,说干就干,但怎么写又是个问题,看来看去还得是树形结构更直观、更容易理解。

但在网上找了一圈,都让装插件,搞的好麻烦。俗话说:“不服就造”,说干就干,本文将介绍如何使用Node.js生成文件夹树形结构,并提供了一个简单的方法示例。

步骤

  1. 导入Node.js的fs模块,该模块提供了文件系统相关的功能。
  2. 定义一个名为 generateTree 的函数,用于生成文件夹树形结构。该函数接受四个参数: rootPath 表示根路径, padding 表示缩进字符, level 表示展示的层级数,excludeFiles 表示需要排除的文件名。
  3. 使用 fs.readdirSync 方法读取指定路径下的文件和文件夹列表,并通过 withFileTypes: true 参数获取每个文件和文件夹的详细信息。
  4. 遍历文件和文件夹列表,根据是否为最后一个元素确定前缀字符。使用 console.log 方法打印出当前文件或文件夹的名称,并添加缩进字符。
  5. 如果当前元素是文件夹且层级数大于0,则递归调用 generateTree 函数,传入当前文件夹的路径作为新的根路径,更新缩进字符和层级数。
  6. 在脚本中调用 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生成文件夹树形结构可以帮助我们更好地理解和组织文件。你可以根据自己的需求修改代码来生成不同层级的文件夹树形结构。