Mam wiele projektów npm zapisanych w katalogu lokalnym. Teraz chcę wykonać kopię zapasową moich projektów bez node_modules
folderu, ponieważ zajmuje on dużo miejsca i można go również odzyskać w dowolnym momencie za pomocą npm install
.
Tak więc potrzebuję rozwiązania, aby usunąć wszystkie foldery node_modules rekurencyjnie z określonej ścieżki za pomocą interfejsu wiersza poleceń. Wszelkie sugestie / pomoc są bardzo odczuwalne.
-prune
to ważna optymalizacja. W przypadku stwierdzenia, że nie będzie powtarzać się wnode_module
katalogach (szukać zagnieżdżonych modułów node_modules)/node_modules/gulp-server-livereload/node_modules: Directory not empty
wiele „wewnętrznych” folderów node_modules. Jak to obejść?'{}' +
?{}
jest symbolem zastępczym, któryfind
zastępuje znalezioną ścieżkę do pliku.+
mówi,find
aby dołączyć wszystkie ścieżki plików do pojedynczego polecenia, zamiast uruchamiać jerm
dla każdego.Poprawa zaakceptowanej odpowiedzi,
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' +
Zauważyłem, że polecenie działałoby bardzo długo, aby pobrać wszystkie foldery, a następnie uruchomić polecenie usuwania, aby polecenie można było wznowić, sugerowałbym użycie
\;
i sprawdzenie postępu wykonywanego polecenia,-print
aby zobaczyć usuwany katalog.Uwaga: Najpierw musisz przejść
cd
do katalogu głównego, a następnie uruchomić polecenie lub zamiastfind .
używaćfind {project_directory}
Aby usunąć foldery jeden po drugim
find . -name 'node_modules' -type d -prune -exec rm -rf '{}' \;
Usuwanie folderów jeden po drugim i drukowanie usuwanego folderu
find . -name 'node_modules' -type d -prune -print -exec rm -rf '{}' \;
Edytować:
Dla osób, które lubią interaktywny sposób, zapoznaj się z odpowiedzią @jeckep, uruchom ją w katalogu, który chcesz przyciąć.
źródło
Wypróbuj https://github.com/voidcosmos/npkill
znajdzie wszystkie moduły node_modules i pozwoli ci je usunąć.
źródło
Natknąłem się na takie rozwiązanie,
find
i określ nazwę folderu.-exec rm -rf '{}' +
uruchom następujące polecenie, aby usunąć foldery rekurencyjnie
find /path -type d -name "node_modules" -exec rm -rf '{}' +
źródło
bash
funkcja do usunięcianode_modules
. Spowoduje tonode_modules
rekurencyjne usunięcie wszystkich katalogów z bieżącego katalogu roboczego podczas drukowania znalezionych ścieżek.Musisz tylko umieścić gdzieś w swoim
$PATH
rmnodemodules(){ find . -name 'node_modules' -type d -prune -exec echo '{}' \; -exec rm -rf {} \; }
źródło
To działa naprawdę dobrze
find . -name "node_modules" -exec rm -rf '{}' +
źródło