0
点赞
收藏
分享

微信扫一扫

递归删除子目录中所有dist和node_modules

肉肉七七 2022-03-25 阅读 45
const fs = require("fs")
const path = require("path")
const delDirs = ["node_modules", "dist"]
var shell = require("shelljs")

/** 递归删除当前目录下所有 dist / node_modules */
function del(filePath, root = "") {
  fs.stat(filePath, function (err, stat) {
    if (err) return console.log(err)

    if (stat.isFile()) {
      // do nothing
    } else {
      fs.readdir(filePath, function (err, data) {
        if (err) return console.log(err)

        // filter 需要继续递归的文件
        data = data.filter((dir) => {
          // 符合删除条件的文件名删除
          if (delDirs.includes(dir)) {
            console.log(path.join(filePath, dir))
            // root 目录不删除
            if (filePath != root) shell.rm("-rf", path.join(filePath, dir))
            return false
          }

          return true
        })

        data = data.map((dir) => path.join(filePath, dir))
        data.forEach((fullPath) => {
          del(fullPath)
        })
      })
    }
  })
}

del(__dirname, __dirname)

举报

相关推荐

0 条评论