J'ai plusieurs projets npm enregistrés dans un répertoire local. Maintenant, je veux faire une sauvegarde de mes projets sans le node_modules
dossier, car il prend beaucoup d'espace et peut également être récupéré à tout moment en utilisant npm install
.
J'ai donc besoin d'une solution pour supprimer tous les dossiers node_modules de manière récursive à partir d'un chemin spécifié à l'aide de l'interface de ligne de commande. Toute suggestion / aide est très appréciable.
-prune
est une optimisation importante. Il va trouver cas pas récursivité dans lesnode_module
répertoires (à la recherche de node_modules imbriquées)/node_modules/gulp-server-livereload/node_modules: Directory not empty
beaucoup de dossiers node_modules "internes". Comment contourner cela?'{}' +
?{}
est un espace réservé quifind
remplace par le chemin du fichier qu'il a trouvé.+
ditfind
d'ajouter tous les chemins de fichiers à une seule commande plutôt que de s'exécuterrm
pour chacun.Améliorer la réponse acceptée,
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
J'ai trouvé que la commande s'exécuterait très longtemps pour récupérer tous les dossiers, puis exécuter une commande de suppression, pour rendre la commande réactivable, je suggérerais d'utiliser
\;
et pour voir la progression de la commande en cours d'exécution, utilisez-print
pour voir le répertoire en cours de suppression.Remarque: vous devez d'abord
cd
dans le répertoire racine, puis exécuter la commande ou au lieu d'find .
utiliserfind {project_directory}
Pour supprimer des dossiers un par un
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;
Pour supprimer les dossiers un par un et imprimer le dossier en cours de suppression
find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
Éditer:
Pour les personnes qui aiment la manière interactive de le faire, reportez-vous à la réponse @jeckep, exécutez-la dans le répertoire que vous souhaitez élaguer.
la source
Essayez https://github.com/voidcosmos/npkill
il trouvera tous les node_modules et vous permettra de les supprimer.
la source
J'ai trouvé cette solution,
find
et spécifiez le nom du dossier.-exec rm -rf '{}' +
exécutez la commande suivante pour supprimer des dossiers de manière récursive
find /path -type d -name "node_modules" -exec rm -rf '{}' +
la source
bash
fonction à supprimernode_modules
. Il supprimera tous lesnode_modules
répertoires de manière récursive du répertoire de travail actuel, tout en imprimant les chemins trouvés.Vous avez juste besoin de mettre quelque part dans votre
$PATH
rmnodemodules(){ find . -name 'node_modules' -type d -prune -exec echo '{}' \; -exec rm -rf {} \; }
la source
Cela fonctionne vraiment bien
find . -name "node_modules" -exec rm -rf '{}' +
la source