Mac 上旧项目的 node_modules 太多,怎么集中清理? / 文章
文章 · SuperCleanerPro

Mac 上旧项目的 node_modules 太多,怎么集中清理?

mactool · 发布于 · 更新于 · 4 分钟阅读

跟着教程建一个项目,试一个网页模板,再下载几个演示项目。过一阵子,源码还没多少,Mac 却少了不少空间。打开这些项目,常常会发现每个里面都有一个 node_modules 文件夹。

不用一个项目一个项目地找。 SuperCleanerPro 的 Node 清理可以集中列出用户主目录中找到的依赖文件夹,按大小排列。先找到占空间的旧项目,再决定哪些暂时不用。

先找大的依赖目录,再看它属于哪个项目

打开 SuperCleanerPro 的 Node 清理页面,按提示授权访问用户主目录,然后点击“开始扫描”。扫描结束后展开 node_modules 项,查看每个具体目录的路径和容量。

例如,列表里有 ~/Projects/old-demo/node_modules 和 ~/Projects/current-site/node_modules。名字都叫 node_modules,但它们属于不同项目。旧演示项目已经不用,可以先检查;正在开发的网站需要依赖运行,就先留下。

点击对应行的文件夹按钮,在 Finder 查看实际位置。列表显示的大小让你知道先看哪里,路径则帮你认出是哪个项目;应用不会替你判断这个项目是否已经过时。

旧演示项目与当前项目的依赖目录分开查看,按路径认出项目;操作示意图,不是应用截图

逐项勾选不用的 node_modules,保留整个项目

先停止旧项目正在运行的开发服务或构建任务。展开扫描结果,逐项勾选确认暂时不用的具体 node_modules 目录,不把上级项目目录或扫描起点当成清理目标。

保留自己写的源码、图片等项目资源,也保留 package.json、对应的锁文件和项目配置。锁文件记录依赖的安装版本,例如 npm 项目里的 package-lock.json。如果曾经直接修改 node_modules 中的代码,先把这些改动保存到项目维护的文件或补丁里。

点击“清理选中项”,核对确认提示中的数量和容量,确认后应用会将所选目录移至废纸篓,并显示处理结果。有目录处理失败时,查看结果提示,再到 Finder 核对,而不是直接把上级目录一起删掉。

只选择旧项目的 node_modules,保留源码与依赖记录,确认后移至废纸篓;操作示意图

移至废纸篓之后,仍可以先检查是否选对。需要真正腾出空间时,确认无需恢复,并检查废纸篓里的其他文件,再清空废纸篓。

下次用这个项目,先重新安装依赖

清理依赖不会让旧项目马上就能直接运行。下次继续开发时,打开保留下来的项目目录,按它原来的安装说明重新安装依赖,再启动项目。

例如,原本使用 npm,且保留了与 package.json 一致的 package-lock.json,可以在项目目录里运行 npm ci。它按锁文件安装依赖,不修改这两份记录;锁文件和依赖声明不一致时会报错。具体条件见 npm 的安装说明。使用其他包管理器的项目,沿用原来的工具和项目说明。

重新安装需要时间,也可能需要网络或私有依赖的访问权限。还在开发、即将演示或暂时无法重新下载依赖的项目,先保留现有 node_modules 更方便。

列表不大,空间却还是不够?

这个页面聚焦用户主目录中的 node_modules,并不包括所有开发工具缓存。扫描结果也受系统文件检索和目录权限影响;没找到某个目录,不代表它不存在。

想继续找空间占用,可以用 DiskTreeSize 查看开发文件夹里具体是什么占空间。Xcode 的构建数据则可以单独检查。

功能和下载入口见 SuperCleanerPro 与 Mac App Store。

常见问题

删除 node_modules 会删除我写的代码吗?

node_modules 通常存放项目安装的依赖。只选择具体的 node_modules 目录,保留上级项目目录、源码和依赖记录。如果你曾直接修改里面的文件,先保存这些改动。

清理后还能继续开发吗?

需要先按原项目的包管理器重新安装依赖。保留 package.json、对应锁文件和项目配置,并确认依赖仍能下载;应用不会自动重新安装。

没有扫描到某个项目怎么办?

这个功能查找用户主目录里的 node_modules,结果也受 macOS 文件检索和访问权限影响。外置盘上的项目或未被检索到的目录,先用 Finder 或 DiskTreeSize 单独查看。

SuperCleanerPro
SuperCleanerPro查看功能、截图、下载方式和隐私说明。
查看应用 ›