Guides Levo · Développeurs : tout le reste

Comment trouver et supprimer les dossiers node_modules sur tout votre Mac

Chaque dossier node_modules peut être supprimé. npm install, pnpm install ou yarn le reconstruit à partir du fichier de verrouillage. La seule question est de savoir lesquels méritent le temps de réinstallation, et la réponse est en général les projets que vous n’avez pas ouverts depuis un mois.

La liste Ready to free de Levo avec des dossiers node_modules et des caches de paquets, chacun avec une taille et une raison
QuoiOùSuppression sûre ?
Dépendances du projet<project>/node_modulesOui, install le reconstruit
Copies imbriquéesnode_modules/*/node_modulesLaissez-les, elles partent avec le dossier parent
Paquets liésLiens symboliques créés par npm linkSupprimez le lien, pas la source vers laquelle il pointe
Paquets globaux/opt/homebrew/lib/node_modules ou le lib de votre version de NodeNon, ce sont des outils que vous avez installés exprès

Pourquoi il y en a autant

Chaque projet JavaScript garde sa propre copie de chaque dépendance, et la plupart gardent aussi les dépendances de leurs dépendances. Une petite app React pèse facilement 300 Mo. Un monorepo peut dépasser 2 Go. Quelques années de projets perso, de tutoriels et de dépôts clonés représentent des dizaines de gigaoctets auxquels vous ne pensez jamais, car les dossiers se trouvent dans des projets que vous n’ouvrez que de temps en temps.

Comment le faire vous-même

Les trouver tous

Ouvrez le Terminal et listez chaque dossier node_modules de votre dossier personnel, le plus gros en dernier. Le -prune empêche find de descendre dans chacun, ce qui le garde rapide.

find ~ -name node_modules -type d -prune -not -path "*/Library/*" -exec du -sh {} + 2>/dev/null | sort -h | tail -30

La liste affiche la taille et le chemin. Tout ce qui se trouve sous ~/Library est ignoré exprès : des apps comme les éditeurs et les outils Electron y gardent leurs propres copies, et ce n’est pas à vous de les supprimer. Il en va de même pour les dossiers à l’intérieur d’un paquet d’app.

Supprimer le dossier d’un projet

cd ~/Developer/old-project
rm -rf node_modules

C’est définitif : rm n’utilise pas la corbeille. Vérifiez le chemin avant d’appuyer sur Entrée. Si vous préférez pouvoir annuler, glissez plutôt le dossier dans la corbeille depuis le Finder, même si le Finder peut mettre longtemps à déplacer un dossier de 50 000 petits fichiers.

En supprimer beaucoup d’un coup avec npkill

npkill analyse un dossier, liste chaque node_modules avec sa taille et sa date de dernière modification, et vous laisse supprimer avec les flèches et la barre d’espace. Vous n’avez pas besoin de l’installer.

cd ~/Developer
npx npkill

Triez par taille ou par dernière modification et parcourez la liste. La colonne de dernière modification est la plus utile : un dossier intact depuis un an est un bon candidat.

Quels projets laisser de côté

Avec pnpm, node_modules est surtout fait de liens vers un store partagé : supprimer les dossiers de projets libère donc moins que ce que du laisse penser. Les fichiers ne sont libérés que lorsque plus rien n’y renvoie, et seulement après pnpm store prune. Consultez comment vider les caches de npm, pnpm, Yarn et Bun.

À regarder aussi

À côté de node_modules, les projets laissent des résultats de compilation : .next, .nuxt, dist, .turbo, .parcel-cache. La prochaine compilation les reconstruit, mais vérifiez que dist n’est pas versionné dans git avant de le supprimer, car certains projets le livrent exprès. Les projets Python laissent aussi leurs propres dossiers lourds, traités dans comment trouver et supprimer les anciens environnements virtuels Python.

Comment Levo s’y prend

Levo tient un index en direct de ce qui remplit votre disque : il sait donc déjà où se trouve chaque node_modules et sa taille. Ils apparaissent dans Ready to free sous les dépendances de projets, chacun avec une taille et une raison, à côté de vos caches de paquets.

Votre propre agent d’IA fait le jugement. Il lit chaque projet et décide s’il est inactif, et Levo ne coche un dossier que si rien n’y tourne : pas de serveur de développement, pas de fichier ouvert, pas de session d’agent de programmation. Un projet touché ce matin reste décoché. L’agent ne peut que lire. Levo supprime lui-même, et revérifie chaque dossier juste avant qu’il parte.

Vous choisissez un niveau de nettoyage, utilisez Select › Smartly, décochez tout ce que vous voulez garder et cliquez sur Clean up. Avec Move to Trash activé, vous pouvez remettre un dossier en place. La configuration est décrite dans Levo pour les développeurs web. La surveillance et les suggestions sont gratuites, tout comme deux nettoyages, puis il y a une licence à vie.

FAQ

Combien d’espace node_modules occupe-t-il ?

Cela dépend du projet. Une petite app pèse souvent de 200 à 400 Mo et un gros monorepo peut dépasser 2 Go. Sur quelques années de projets, la plupart des développeurs trouvent de 10 à 50 Go répartis sur des dizaines de dossiers.

Supprimer node_modules cassera-t-il mon projet ?

Non. Le dossier est reconstruit à partir de votre fichier de verrouillage la prochaine fois que vous lancez npm install, pnpm install ou yarn. Les fichiers source du projet ne sont pas touchés. Les exceptions sont les fichiers modifiés à la main dans le dossier et les paquets retirés de npm.

Peut-on supprimer node_modules pendant qu’un serveur de développement tourne ?

Évitez. Le serveur peut planter ou servir des pages cassées, et un observateur de fichiers peut échouer en pleine suppression. Arrêtez d’abord le serveur.

Pourquoi rm -rf node_modules est-il si lent ?

Un seul dossier peut contenir de 50 000 à 200 000 petits fichiers, et chacun doit être supprimé séparément. C’est plus lent sur un disque presque plein. Supprimer depuis le Terminal est bien plus rapide que de déplacer le dossier dans la corbeille depuis le Finder.

Dois-je aussi supprimer le fichier de verrouillage ?

Non. Gardez package-lock.json, pnpm-lock.yaml ou yarn.lock. C’est la trace qui permet à la réinstallation de vous redonner les mêmes versions.