一条命令删除目录下的所有node_modules

作为前端开发,应该都了解node_modules这个目录,尤其同时维护多个项目的时候,每个项目都会产生一个node_modules,每个node_modules少则几十兆,多则几百甚至上千兆,随着时间的积累,维护项目的增加,整个项目目录体积会越来越大。

node_modules原罪

删除之前,先了解点node_modules的背景。

node_modules是在node工程项目中,通过npm install命令安装的依赖包。实际项目开发中,可能直接使用到的依赖并没有那么多,但是每个npm包又依赖着其他的包,这样层层嵌套引用,那整个的node_modules就会变得特别大了。

尤其早期npm,对依赖的管理方式并不好,比如有AB两个包均引用了C包,并且,两个包依赖的C包版本不同,那么执行npm install安装时,会把不同版本的C包分别安装到AB两个包各自目录下的node_modules文件夹,这些文件都会大量增大整个node_modules目录的体积。尽管这种依赖方式在后期的npm升级迭代过程中不断的打磨优化,但是node_modules太重的问题似乎并没有彻底解决的办法。

node_modules原罪

node_modules原罪

查询目录下所有的node_modules目录和所占空间

Linux中的命令:

1
find . -name "node_modules" -type d -prune | xargs du -chs

Windows中的命令(当然,Windows中也可以借助一些shell客户端或者WLS等方式,执行上面的Linux命令,并且我相信更多人会选择这种方式):

1
FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" echo %d"

在整理这篇文章前,我已经把我所有项目的node_modules删掉了,今天一边整理文章,一边工作,又安装了几个项目:

查找目录中的node_modules

查找目录中的node_modules

从图中看,这才区区5个项目而已,node_modules就已经占用了1.2G的硬盘空间,着实吓人呢。

删除目录下所有的node_modules目录

删除命令和查询命令差不多

Linux系统中

1
find . -name "node_modules" -type d -prune -exec rm -rf '{}' +

Windows系统中

1
FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" rm -rf "%d"

最后吐槽一下,现在前端开发真的太卷了,一个脚本型语言,现在搞得对各种硬件的要求贼高,甚至要超过一些编译型的语言。

本文永久链接: https://www.mulianju.com/delete-all-node_modules/