Skip to content

rimraf 常用命令

rimraf 是一个跨平台的文件删除工具,等同于 Unix 的 rm -rf,解决 Windows 下删除文件路径过长或被占用的问题。

💡 Node.js 16+ 内置了 fs.rm(dir, { recursive: true }),可以替代 rimraf:

bash
# 在 package.json 中使用内置方案(无需安装 rimraf)
node -e "fs.rmSync('dist', { recursive: true, force: true })"

如果项目 Node.js 版本 >= 16 且只需清理构建产物,可考虑不引入 rimraf。

为什么需要 rimraf

  • 跨平台兼容:Windows 的 CMD 不支持 rm -rf,PowerShell 虽有别名但语法不同
  • 路径过长:Windows 下 node_modules 嵌套过深会导致删除失败
  • 统一命令:团队成员使用不同系统时,package.json 中的脚本无需区分平台

安装

bash
# 全局安装
npm install -g rimraf

# 安装为开发依赖
npm install -D rimraf

使用方式

命令行使用

bash
# 删除指定目录
rimraf node_modules

# 删除多个目录
rimraf dist build coverage

# 使用通配符
rimraf *.log

在 package.json 中使用

json
{
  "scripts": {
    "clean": "rimraf dist",
    "clean:all": "rimraf dist node_modules .cache",
    "prebuild": "rimraf dist",
    "build": "vite build"
  }
}

常见使用场景

清理构建产物

json
{
  "scripts": {
    "clean": "rimraf dist",
    "prebuild": "rimraf dist",
    "build": "vite build"
  }
}

清理缓存

json
{
  "scripts": {
    "clean:cache": "rimraf node_modules/.cache .vitepress/cache",
    "clean:all": "rimraf dist node_modules .cache"
  }
}

重装依赖

json
{
  "scripts": {
    "reinstall": "rimraf node_modules yarn.lock && yarn install"
  }
}

清理测试覆盖率

json
{
  "scripts": {
    "clean:coverage": "rimraf coverage",
    "test:coverage": "rimraf coverage && jest --coverage"
  }
}

rimraf vs rm -rf

特性rimrafrm -rf
跨平台❌ 仅 macOS/Linux
Windows CMD
Windows PowerShell⚠️ 需要 Remove-Item -Recurse
路径过长问题✅ 自动处理
package.json 脚本✅ 统一写法❌ 需要区分平台

常见问题

删除 node_modules 很慢

bash
# rimraf 会处理路径过长的问题,但仍然可能较慢
# 可以尝试先关闭编辑器和终端,再执行删除
rimraf node_modules

权限不足

bash
# Windows: 以管理员身份运行终端
# macOS/Linux: 先关闭占用文件的进程(编辑器、终端等),再执行删除
rimraf node_modules

⚠️ 不推荐使用 sudo rimraf,可能导致文件权限混乱,影响后续 npm install 等操作。应先关闭占用文件的程序,或检查文件权限。

参考

个人学习笔记,部分内容借助 AI 辅助整理,仅供查阅参考,请以官方文档为准