咱就是说,node_modules 非得这么玩儿吗?

乐活   2024-09-30 15:16   北京  


我的个人博客:www.moonkite.cn

大家好,我是风筝。

首先祝大家国庆快乐!相信很多人都已经放假了,那这篇文章中提到的小技巧可以放假回来用一用,到时给你的磁盘也放个假。

这两天系统又开始提示磁盘空间不足了,好歹也是 500 G的硬盘,所以说电脑硬盘还是越大越好,怪不得好多同行都把 512G 的改成2T的。

为了在不换电脑的情况下解决这个问题,我还特意买了一块儿外接硬盘,俗称“尿袋硬盘”,就是这个样子的。

但是原本有些东西已经放在电脑本身的硬盘里了,改起来非常麻烦,甚至有些根本不能改。

想一想,我电脑上不存照片、不存视频、不存小电影,它怎么就占那么大空间呢?

于是我决定清理一番,用磁盘管理软件进行深度扫描。

一看,微信60多G,不能动,这包括了好多年的聊天记录了,因为每次换电脑都是从旧电脑直接迁移的。

再一看,docker 容器 40多G,不好动,删了之后,下次再用的时候还得重新下载,麻烦,留着吧。

再一看,Android SDK 20多G,没办法,这玩意确实就这么大,清理了几个低版本的,清理了几个G出来。

剩下的都是一些不大不小的问件,清理了一部分,感觉是杯水车薪。

有同事提醒我,node_modules 会占很大空间,但是都是小文件,用磁盘管理工具一般检查不出来。

我一想有道理啊,这两年也确实鼓捣过不少前端项目。

清理 node_modules 工具

经过一番搜索,我发现了一个小工具,可以看到当前电脑上的所有node_modules列表。

用起来很简单,直接在命令行执行 npx npkill,除此使用需要安装,稍等片刻。

就会列出当前电脑上所有的 node_modules 目录列表,并标示其所占空间,可以将一些常年不用的清除掉。

不看不知道,一看吓一跳,好几伙,我本地的所有 node_modules加起来有22.91G了,我这两年到底在执行了多少次 npm install啊。

从这里得到一个教训,长期不用的项目记得把 node_modules删掉,积少成多,到时候就会变成一大坨垃圾存在电脑里。

node_modules 机制有问题吧

虽说涨了经验,但是也不得不吐槽 node_modules的这种机制。

每一个项目都会有一个独立的 node_modules目录,用来管理当前项目的所有依赖包,也就是说如果你有10个项目,就算这10个项目的依赖完全一样,那也会下载10次依赖,有10份同样的node_modules存在。

说到这里,就不得不夸一夸其他的包管理工具了,比如 Maven,全局设置一个仓库地址,同一个包的同一个版本都是全局复用的,也就是说不管你有多少个项目,只要这些项目依赖同一个版本的某个包,只要下载一次就够了。

其实这也不是什么优点了吧,按照正常的程序思维来考虑,这应该是常规手段才对,这不就是缓存机制吗,不管是操作系统、浏览器,还是应用系统,处处都有缓存机制的应用。

但是在 npm 和 yarn 中,就是一个项目一份,美其名曰是为了更好的独立性、可移植性和独立性。依我看来,这就是当初的设计缺陷吧,然后又懒得改了。

还好,另外一个包管理工具 pnpm解决了这个问题,pnpm 在本地项目中使用软链接而不是复制依赖库。这样可以减少冗余的文件并节省磁盘空间。它通过全局的存储机制来共享依赖,不同的项目之间不会重复下载相同的包。

这不,如果每个项目完全单独一份包,真有那么多优点。那为什么还有pnpm 出来打脸呢?

最后

说归说,该用还得用。

如果你也有很多前端项目的话,可以试试 npx npkill清理一些不常用的,我发现我电脑上有些项目的上次编辑时间都是2年多前了,这些项目恐怕是不会再被打开了,能删的就删了。

最重要的是:下次换电脑,一定要买最大硬盘的!

还可以看看风筝往期文章

又浪费时间了,我改了一款开源的安卓启动器,从此手机变得极度宁静了

「差生文具多系列」最好看的编程字体

我患上了空指针后遗症

一千个微服务之死

搭建静态网站竟然有这么多方案,而且还如此简单

被人说 Lambda 代码像屎山,那是没用下面这三个方法

古时的风筝,一个程序员,一个写作者。

古时的风筝
努力成为独立开发者的程序员,分享我了解的关于编程、独立开发等知识,知不不言,言无不尽
 最新文章