如何用rimraf删除src目录下所有嵌套的dist文件夹?
解决src目录下所有嵌套dist文件夹的删除问题
一、修复rimraf命令的用法
你碰到的Illegal characters in path错误,大概率是Windows终端对通配符的解析导致的,试试下面两种写法:
- 如果用npm脚本(在package.json的scripts字段里配置):
配置好后执行"scripts": { "clean-dist": "rimraf \"src/**/dist\"" }npm run clean-dist即可,双引号能让rimraf自行解析通配符,避免Windows终端错误处理**符号。 - 直接用npx执行:
同样用双引号包裹路径,绕开终端对通配符的错误解析。npx rimraf "src/**/dist"
要是在Linux、macOS或者Git Bash这类类Unix环境下,直接执行rimraf src/**/dist就能生效,不需要额外加引号。
二、Node.js脚本方案(如果rimraf仍无法使用)
写一个简单的Node.js脚本,递归遍历src目录,找到所有名为dist的文件夹并删除:
const fs = require('fs').promises; const path = require('path'); async function deleteDistFolders(dir) { const entries = await fs.readdir(dir, { withFileTypes: true }); for (const entry of entries) { const fullPath = path.join(dir, entry.name); if (entry.isDirectory()) { if (entry.name === 'dist') { // 删除dist文件夹及其所有内容 await fs.rm(fullPath, { recursive: true, force: true }); console.log(`已删除: ${fullPath}`); } else { // 递归遍历子目录 await deleteDistFolders(fullPath); } } } } // 从src目录开始执行删除操作 deleteDistFolders('./src') .then(() => console.log('所有dist文件夹删除完成')) .catch(err => console.error('删除过程出错:', err));
把这段代码保存为clean-dist.js,然后执行node clean-dist.js就行。这个脚本用到了Node.js 14及以上版本支持的fs.rm方法,能递归删除文件夹,force参数确保即使文件夹非空也能被删除。
内容的提问来源于stack exchange,提问作者theprogrammer
相关产品推荐
相关产品推荐

