Mac 上清理 node_modules 的核心目的,是释放被依赖文件长期占用的磁盘空间,同时避免同步工具反复传输大量无意义的小文件;常见做法包括使用 find 命令递归查找并删除、借助 rimraf 高效清理、清除 npm 缓存,以及通过 pnpm 和 .gitignore 规则从源头减少 node_modules 垃圾文件再次堆积。

在 Mac 上清理 node_modules 这类常见“垃圾文件”,本质上就是把被成千上万个依赖包长期占据的磁盘空间释放出来,同时还能避免像 Synology Drive 这样的同步工具反复上传、下载大量无用小文件,拖慢开发和同步效率。更常见的情况是,一个 node_modules 目录动辄就会膨胀到几百 MB,甚至数 GB,而且往往不是直接拖进废纸篓就能顺利删除的类型。
快速定位并批量删除项目内的node_modules
先打开终端,并进入目标项目的根目录(不是用户主目录,也不是随意新建的空文件夹)。
执行下面的命令,递归查找当前目录及所有子目录中的 node_modules 文件夹:
【必须加 -depth 参数,否则 macOS 的 find 在遇到权限拒绝时,可能会跳过部分路径】
find . -depth -name "node_modules" -type d
确认搜索结果无误后,再执行强制删除命令(会静默删除所有匹配目录,删除后通常无法恢复):
find . -depth -name "node_modules" -type d -prune -exec rm -rf {} +
用 rimraf 工具安全高效删除
rimraf 是适合 Node.js 环境使用的跨平台删除工具,专门针对海量小文件清理进行了优化,处理 node_modules 时通常比系统自带的 rm -rf 更高效,很多场景下可快 3–5 倍。
第一步:全局安装 rimraf(通常只需安装一次)
npm install -g rimraf
第二步:进入任意包含 node_modules 的项目目录后,运行:
rimraf node_modules
如果需要批量清理多个项目中的 node_modules,也可以配合 find 命令一起使用:
find ~/Projects -name "node_modules" -type d -exec rimraf {} ;
注意:该命令会遍历 ~/Projects 下的全部子目录,请务必先确认路径准确无误,避免误删重要文件。
清理全局 npm 缓存与残留模块
除了项目里的 node_modules,系统中全局安装的包(例如 create-react-app、vue-cli)也可能在 ~/.npm/_cacache 和 /usr/local/lib/node_modules 中留下不少缓存和残留文件。
方法一:清空 npm 缓存(安全性高,推荐优先使用)
npm cache clean --force
方法二:删除全局模块目录(通常需要管理员权限)
sudo rm -rf /usr/local/lib/node_modules
方法三:连同用户级缓存和构建缓存一并清理(更彻底,但操作前要谨慎)
rm -rf ~/.npm ~/.node-gyp
【执行前请先确认你没有在 ~/.npm 中手动保存私有配置、认证信息或 token】
防止 node_modules 再次泛滥
第一步:启用 pnpm 替代 npm 或 yarn
pnpm 采用硬链接 + 符号链接机制,同一份依赖在整台电脑中通常只保留一份物理文件,可让新项目的 node_modules 体积明显下降,很多情况下可直降 80% 以上。
npm install -g pnpm → pnpm install
第二步:在项目根目录添加 .gitignore(如果已存在则直接追加)
确保至少包含以下三行:
node_modules/package-lock.jsonnpm-debug.log
第三步:为 Synology Drive 或其他同步工具设置排除规则
进入群晖 DSM → Drive 共享文件夹设置 → 同步过滤规则 → 添加“node_modules”、“dist”、“.nyc_output”等常见开发垃圾目录,减少无效同步和磁盘占用。
