JavaScript 项目
如何删除旧的 node_modules 文件夹
node_modules 可以根据项目的 package.json 和锁文件重新安装,所以暂时不碰的项目,把它删掉通常没问题。动手之前,先确认锁文件在,项目也没有依赖打过补丁的包或私有包。然后一个项目一个项目地来。
找出占空间最多的文件夹
先列清单,什么都别删。在终端里运行 find ~/Projects -type d -name node_modules -prune -exec du -sh {} +,会列出 ~/Projects 下每个顶层 node_modules 文件夹和它的大小。把起始目录换成你放代码的地方就行。
查找和删除要分成两步。把 rm -rf 塞进同一条 find 命令里,路径只要偏了一层,删掉的就是别的东西。
删之前要确认的事
打开项目,看看有没有 package-lock.json、yarn.lock 或 pnpm-lock.yaml。没有锁文件的话,重新安装可能会装上比原来更新的版本,项目也许就不能照原样构建了。
另外留意有没有打过补丁的包、本地 link 的包,或者来自私有 registry、以后可能访问不了的依赖。锁文件里的包都还能下载,锁文件才有用。项目重要的话,先确认源代码已经提交或备份。
一次处理一个项目
项目通过了上面的检查,删起来就很快。
- 挑一个暂时不碰的项目,确认它有锁文件。
- 把这个项目的 node_modules 文件夹移到废纸篓。
- 下次要用时,运行项目的安装命令,比如 npm install。
- 确认能构建、测试也能通过,再清空废纸篓。
Mint 能帮你做什么
Mint 会在 ~/github、~/Projects、~/Developer 这类常见的代码文件夹里,找出超过 10 MB 的 node_modules,并逐个检查锁文件。有锁文件的,那一行会写出恢复用的命令,比如 npm install,归在“可重建”下面;没有锁文件的归到“杂项”,并注明可能无法恢复。
这些行都不会默认勾选,因为删了之后项目要重新安装才能运行。删哪些由你挑,再选“移到废纸篓”或“永久删除”。App Store 版的 Mint 只能查看你授权访问的文件夹。
常见问题
能把所有 node_modules 都删掉吗?
不建议。正在开发的项目离不开它,旧项目依赖的包也可能已经下载不到了。
删除 node_modules 会删掉源代码吗?
不会,只要删的是 node_modules 文件夹本身。用终端操作时尤其要核对路径,打错一个字就可能波及整个项目。
项目没有锁文件怎么办?
那样重新安装时,包的版本可能和现在不一样。如果需要这个项目照现在的样子构建,就先留着这个文件夹。
找出那些被忘掉的 node_modules
在 Mint 里扫描一次,删之前先看清哪些项目有锁文件。