背景

有时候想要删除某个目录下所有命名为xxx的文件夹,一个个手动去删除,非常辛苦,那么可以使用这个进行自动删除,一个典型例子就是我需要拷贝or删除一个存放了很多前端工程化项目的目录,因为它每个项目都有node_modules,那么拷贝和删除的话速度会非常非常慢,所以一般操作是使用rimraf包先删除node_modules再进行操作,执行完后再需要的项目里重新执行install,但是手动一个个去执行对手不太友好,所以写了个脚本去执行。

前提

1.安装node环境,在https://nodejs.org/en/官网下载即可(建议下载LTS,即长期支持版本)
2.执行以下命令全局安装rimraf
npm install rimraf -g

脚本

del.bat文件

echo off
node del.js node_modules
pause

del.js文件

const fs = require("fs");
const path = require("path");
const childProcess = require("child_process");
let delDir = "";

if (process.argv[2] == "" || process.argv[2] == null || process.argv[2] == undefined) {
    console.error("Please Input the dir which you want to delete.");
    process.exit(1);
} else {
    delDir = process.argv[2];
}

function loopDirs(dir){
    const dirs = fs.readdirSync(dir);
    for(let i=0;i<dirs.length;i++){
        let temp = dirs[i];
        let newDir = path.join(dir,temp);
        if(fs.statSync(newDir).isDirectory()){
            if(temp == delDir){
                console.log(`正在删除${newDir}`);
                childProcess.execSync(`rimraf ${newDir}`);
            }else{
                loopDirs(newDir);
            }
        }
    }
}

console.log("开始删除...");
loopDirs(__dirname);
console.log("删除完成...");

使用方法

  1. 将del.bat里的node_modules改为你想删除的目录名
  2. 将del.bat和del.js放在同一目录下
  3. 双击del.bat即可

演示效果

image.png


点墨
26 声望3 粉丝

全栈前端开发工程师


引用和评论

0 条评论