NodeJs 生成本地文件树

# NodeJs 生成本地文件树

# 内容

// dirTree.js

//遍历文件夹,获取所有文件夹里面的文件信息
var fs = require('fs') 

// 忽略文件夹
let ignoreList = ['node_modules', 'dist', '.git', '.vscode']

/* * path 文件夹路径 * */
function geFileList(path) {
  var filesList = []
  var targetObj = {
    name: 'root',
    children: []
  }
  readFile(path, targetObj, filesList)
  return { targetObj, filesList }
}

//遍历读取文件
function readFile(path, targetObj, filesList) {
  files = fs.readdirSync(path)
  //需要用到同步读取
  files.forEach(walk)
  function walk(file) {
    states = fs.statSync(path + '/' + file)
    if (states.isDirectory()) {
      // 文件夹
      let item = { name: file, children: [] }
      targetObj.children.push(item)
      if (!ignoreList.includes(file)) {
        readFile(path + '/' + file, item, filesList)
      }
    } else {
      // 文件
      targetObj.children.push(file)
      filesList.push(file)
    }
  }
}

//写入文件 utf-8 格式
function writeFile(fileName, data) {
  fs.writeFile(fileName, data, 'utf-8', complete)
  function complete() {
    console.log(fileName + '文件生成成功')
  }
}

// 获取文件信息
var dataObj = geFileList('G:\\xiaoc1103\\code\\gitlab\\lz-ds\\trading-user-subaccount')

// 生成文件树
var tree = JSON.stringify(dataObj.targetObj)
dirTree = 'var dirTree = #1'.replace('#1', tree)
writeFile('dirTree.js', dirTree)

// 生成所有文件列表
// var file = JSON.stringify(dataObj.filesList)
// fileList = 'var fileList = #1'.replace('#1', file)
// writeFile('fileList.js', fileList)

在安装 nodeJs 后,打开命令行,进入文件对应位置,执行 node dirTree.js 即可