Originally published on the Trilon Blog on Aug 7, 2019.
Whenever we work on a new project we need to run npm install
, but how often do we think about the toll this takes on our hard-drive?
A single node_modules folder can take up anywhere from 200+ megabytes of space (sometimes 1GB+ !).
Now take a look at your github/
folder, or wherever else you're storing the majority of your projects, and you can start to see where some of your free hard-drive space has gone!
I recently tweeted about this, as it's something I use every few months and wanted to share with others who might have ran into the same situation themselves!
Liquid error: internal
List all node_modules found in a Directory:
First, let's take a look at ALL the node_modules we have in a directory, before we actually start deleting them!
NOTE: Make sure you cd into a specific directory where most of your projects are. ie:
documents
ordocuments/github
.
Mac / Linux:
This command will print out each folder, and even show us how much space the folder is occupying ! Thanks to Rhymes for the tip!
$ cd documents
$ find . -name "node_modules" -type d -prune -print | xargs du -chs
--- Example output ---
1.0G ./Github/big-project/node_modules
225M ./Github/Trilon.io/node_modules
482M ./Github/Some_Demo/node_modules
1.7G total
Windows:
$ cd documents
$ FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" echo %d"
This list will give you a good idea of just the sheer amount of projects you have installed on your machine!
Delete all node_modules found in a Directory:
NOTE: Use caution here, and make sure that you are in a directory where you're comfortable removing all the instances of node_modules, run the script above to see a full list of them all before deleting.
This script is actually very similar to the one above, but we're going to be utilizing rm -rf
to completely delete them.
WARNING: This process is irreversible!
Mac / Linux:
$ cd documents
$ find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
Windows:
$ cd documents
$ FOR /d /r . %d in (node_modules) DO @IF EXIST "%d" rm -rf "%d"
Powershell Users:
Get-ChildItem -Path "." -Include "node_modules" -Recurse -Directory | Remove-Item -Recurse -Force
There we have it!
For me personally, this typically clears out about 40-60GB from my hard-drive, but your mileage may vary!
In Conclusion
- Make sure to list all node_modules in a given directory BEFORE deleting them.
- Make sure to be cautious as this process is irreversible!
- Remember to
npm install
on the projects you need to work on again. - Enjoy the free space! :)
Comment below I'd love to hear how much you saved!
Also, don't forget to check out the Trilon Blog for more in-depth articles!
Latest comments (48)
💯💯💯
Awesome thank you so much... Helped me clean 13Gb
Awyeah. Just freed up 30Gigs! :)
💯 woo!
Nice! really helpful
🙌🙌
If anyone else wants to know how to delete node_modules folders that haven't been used recently, modify the find command to check the mtime (modified time) of the folder. I use this to only delete node_modules older than 30 days like so;
Delete node_modules older than 30 days;
The -mtime flag can be configured other ways, e.g. to get all files modified today pass -1 instead.
WOW I love this !!!! This is an amazing addition :)
Adding this to my bash profile immediately - this is basically what I've always needed!
Great find Seb !
This is awesome, I saved so much disk space by running this script
Happy to hear it !!! :)
I haven't maintained this repo much but I have created this github.com/canastro/remove-git-ign...
Its a cli that finds all .gitignore files under a given root and deletes them after confirmation.
The windows version will take a while as it looks at every file. If you just want to blast it, using robocopy is a good solution.
This method also gets you round the windows long file name problem that you often come across here.
Won’t this delete everything, and not just the node_modules themselves ? I’ll have to give it a try ! I saw someone else post this as well:
robocopy EMPTY_FOLDER node_modules /mir
It’ll delete everything under the destination path. Syntax is:
With a redirect to null to remove output.
I’m not a node dev but devops who has to regularly remove these things from build slaves. Obviously there’s a cost on next build re-downloading.
This is a very nice thread. Thanks!
Well for me, I had 3 projects out of like 15+ in my
dev
folder that I didn't want thenode_modules
folder to be deleted.My little workaround was to rename the
node_modules
of those projects tonode_modules2
so it won't be affected by the script, then I turned it back after.Yeah a lot of times I just wipe everything out, and go back to the recent projects and
npm install
again real quick. Check out npkill as well, you can interactively delete node_modules folders with it!This is very handy! I run into storage issues on my laptop all the time.
Today I cleared 697M in node_module folders.
🙌🙌🙌🎸
Since it wasn't mentioned in the article: npm tools such as pnpm (by @zkochan ) and yarn in PnP mode (or the upcoming Yarn v2) will keep a single copy of (each version of) a package you use across all your projects and just link them locally, saving you a ton of space without having to worry about deleting old npm_modules folders. PNPM also does a lot of cool other stuff, not my product, but I recommend it without reservation.
Great idea! I’ll have to do add notes about pnpm in there for folks to use in the future! Thanks for reminding me 🙌🙌
Fantastic Tip, thank you!
Saved .... 1.7gb
Ohh my God, 21gb!!
1.9GB
Excellent !! 🥇🤘
Glad to hear it!! :)
awesome! thanks for sharing! ❤
Of course! More related tips and tricks soon ! 🙏
Such a great idea! Thanks.
Appreciate the kind words ! Hope it cleared out plenty of space for you! 🙌
@markpieszak you're a lifesaver.
Much appreciated @KP!
How much space did it end up clearing out for you??
About 1GB, but I have enough space (for now!) I can potentially "save" another 14GB if I delete all my node_modules folders. Thanks!
That's great!
Glad to hear it :)