一条命令删除目录下的所有node_modules
作为前端开发,应该都了解node_modules
这个目录,尤其同时维护多个项目的时候,每个项目都会产生一个node_modules
,每个node_modules
少则几十兆,多则几百甚至上千兆,随着时间的积累,维护项目的增加,整个项目目录体积会越来越大。
node_modules
原罪
删除之前,先了解点node_modules
的背景。
node_modules
是在node
工程项目中,通过npm install
命令安装的依赖包。实际项目开发中,可能直接使用到的依赖并没有那么多,但是每个npm包又依赖着其他的包,这样层层嵌套引用,那整个的node_modules
就会变得特别大了。
尤其早期npm
,对依赖的管理方式并不好,比如有A
、B
两个包均引用了C
包,并且,两个包依赖的C
包版本不同,那么执行npm install
安装时,会把不同版本的C
包分别安装到A
和B
两个包各自目录下的node_modules
文件夹,这些文件都会大量增大整个node_modules
目录的体积。尽管这种依赖方式在后期的npm升级迭代过程中不断的打磨优化,但是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
删掉了,今天一边整理文章,一边工作,又安装了几个项目:
从图中看,这才区区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" |
最后吐槽一下,现在前端开发真的太卷了,一个脚本型语言,现在搞得对各种硬件的要求贼高,甚至要超过一些编译型的语言。