Odpowiedzi:
Następujące polecenie usuwa wszystkie globalne moduły npm. Uwaga: to nie działa w systemie Windows. Aby uzyskać działającą wersję systemu Windows, zobacz odpowiedź Ollie Bennetta .
npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
Oto jak to działa:
npm ls -gp --depth=0
wyświetla wszystkie globalne moduły najwyższego poziomu (zobacz dokumentację cli dla ls )awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'
wypisuje wszystkie moduły, które nie są tak naprawdę npm (nie kończy się na /npm
)xargs npm -g rm
usuwa wszystkie moduły globalnie, które przechodzą przez poprzednią potokDla osób korzystających z systemu Windows najłatwiejszym sposobem usunięcia wszystkich globalnie zainstalowanych pakietów npm jest usunięcie zawartości:
C:\Users\username\AppData\Roaming\npm
Możesz się tam szybko dostać, wpisując %appdata%/npm
w Eksploratorze, w wierszu polecenia lub z menu Start.
%USERPROFILE%\AppData\npm
bez roaming
.
npm install
. Musiałem też usunąć package-lock.json
plik.
Próbowałem Kai Sternad „s rozwiązanie ale wydawało mi się to niedoskonałe. Po ostatnim awk
z samego drzewa deps pozostało wiele specjalnych symboli .
Tak więc wymyśliłem własną modyfikację rozwiązania Kai Sternad (z niewielką pomocą pomysłu cashmere ):
npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm
npm ls -gp --depth=0
wyświetla wszystkie globalnie zainstalowane moduły npm w formacie możliwym do parsowania :
/home/leonid/local/lib
/home/leonid/local/lib/node_modules/bower
/home/leonid/local/lib/node_modules/coffee-script
...
awk -F/node_modules/ '{print $2}'
wyodrębnia nazwy modułów ze ścieżek, tworząc listę wszystkich globalnie zainstalowanych modułów.
grep -vE '^(npm|)$'
usuwa sam npm i puste linie.
xargs -r npm -g rm
połączenia npm -g rm
do każdego modułu na liście.
Podobnie jak rozwiązanie Kai Sternad , będzie działać tylko pod * nix.
npm
instaluje wszystkie jego globalne moduły w tym samym katalogu. Dokładna lokalizacja może się różnić, ale zazwyczaj jest /usr/local/lib/node_modules
.
npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
@angular/cli
). Dodaję kolejny awk
element dopasowujący, a działające dla mnie polecenie wygląda następująco:npm ls -gp --depth=0 | awk -F/ '/node_modules\/@/ {print $(NF-1)"/"$NF} /node_modules\/[^@]/ && !/\/npm$/ {print $NF}' | xargs npm -g rm
sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
pracował dla mnie
sudo npm list -g --depth=0.
wyświetla listę wszystkich zainstalowanych najwyższych poziomówawk -F ' ' '{print $2}'
pozbywa się ├──awk -F '@' '{print $1}'
dostaje część przed „@”sudo xargs npm remove -g
usuwa pakiet globalnienpm remove UNMET
NOOP.
grep -v npm
aby sam npm nie został usunięty:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
Dla osób korzystających z PowerShell :
npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }
Aby wyczyścić pamięć podręczną:
npm cache clear
Po prostu przejdź do %appdata%/npm
katalogu i uruchom następujące ...
for package in `ls node_modules`; do npm uninstall $package; done;
EDYCJA: To polecenie nie działa z npm 3.3.6 (Node 5.0). Używam teraz następującego polecenia Bash, które zamapowałem na npm_uninstall_all w moim pliku .bashrc:
npm uninstall `ls -1 node_modules | tr '/\n' ' '`
Dodano bonus? jest o wiele szybszy!
https://github.com/npm/npm/issues/10187
Jak odinstalować wszystkie zależności wymienione w pakiecie.json (NPM)?
npm
a n
przedtr
w systemie Windows przejdź do katalogu „C: \ Users {nazwa użytkownika} \ AppData \ Roaming” i ręcznie usuń folder npm
Jeśli masz zainstalowane jq , możesz przejść nawet bez grep / awk / sed:
npm ls -g --json --depth=0 |
jq -r '.dependencies|keys-["npm"]|join("\n")' |
xargs npm rm -g
W Debianie i pochodnych możesz zainstalować jq z:
sudo apt-get install jq
json
stylu apropos .
npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
System operacyjny nie został określony przez OP. W systemie Windows tego skryptu można używać do usuwania globalnych modułów lokalnych i pamięci podręcznej użytkownika.
Zauważyłem na Linuksie, że globalny root jest naprawdę globalny dla systemu, a nie dla danego użytkownika. Dlatego usunięcie globalnego katalogu głównego może nie być dobrym pomysłem dla wspólnego systemu. Poza tym mogę przenieść skrypt do basha jeśli jest zainteresowany.
W systemie Windows zapisz w pliku cmd, aby uruchomić.
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SETLOCAL EnableExtensions
SET /A ecode=0
:: verify
SET /P conf="About to delete all global and local npm modules and clear the npm cache. Continue (y/[n])?
IF /I NOT "%conf%"=="y" (
ECHO operation aborted
SET /A ecode=!ecode!+1
GOTO END
)
:: wipe global and local npm root
FOR %%a IN ("" "-g") DO (
:: get root path into var
SET cmd=npm root %%~a
FOR /f "usebackq tokens=*" %%r IN (`!cmd!`) DO (SET npm_root=%%r)
:: paranoid
ECHO validating module path "!npm_root!"
IF "!npm_root:~-12!"=="node_modules" (
IF NOT EXIST "!npm_root!" (
ECHO npm root does not exist "!npm_root!"
) ELSE (
ECHO deleting "!npm_root!" ...
:: delete
RMDIR /S /Q "!npm_root!"
)
) ELSE (
ECHO suspicious npm root, ignoring "!npm_root!"
)
)
:: clear the cache
ECHO clearing the npm cache ...
call npm cache clean
:: done
ECHO done
:END
ENDLOCAL & EXIT /b %ecode%
Użyj tego kodu, aby odinstalować dowolny pakiet:
npm rm -g <package_name>
Możesz zlokalizować wszystkie zainstalowane pakiety npm w lokalizacji:
C:\Users\username\AppData\Roaming\npm
i usuń zawartość npm, którą chcesz usunąć.
Jeśli AppData nie jest wyświetlana, oznacza to, że jest ukryta i możesz przejść do Wyświetl w eksploratorze plików i zaznaczyć Ukryte elementy, tam możesz zobaczyć wszystkie ukryte foldery.
Cóż, jeśli jesteś w systemie Windows i chcesz usunąć / odinstalować wszystkie moduły node_node, musisz wykonać następujące kroki.
Wpisz poniższe polecenie i daj na 1-2 minuty, aby odinstalować wszystkie katalogi w module node_module
rmdir /s /q node_modules
Mam nadzieję, że to pomoże komuś w systemie Windows
jeśli masz Intellij Webstorm, możesz użyć wbudowanego menedżera pakietów graficznych.
otwórz go jako root i utwórz pusty projekt. iść do
Plik> Ustawienia> Język i ramy> Node.js i NPM
tam zobaczysz wszystkie zainstalowane pakiety. Deinstalacja jest łatwa, możesz zaznaczyć i odznaczyć dowolny pakiet, który chcesz odinstalować, Ctrl + a także woki.
Dla yarn global
nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add
Lub, jeśli nie obchodzi Cię, co tak naprawdę jest w środku package.json
echo {} > ~/.config/yarn/global/package.json && yarn global add
Powinno to dotyczyć również NPM, ale nie jestem pewien, gdzie jest przechowywany NPM global.
Ponieważ jest to najlepsza odpowiedź w wyszukiwaniu, zamieszczam to tutaj, ponieważ było to rozwiązanie, którego użyłem w przeszłości do czyszczenia komputerów przełączających laptopy.
cd ~/Documents # or where you keep your projects
find . -name "node_modules" -exec rm -rf '{}' +
źródło: https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e
Oto bardziej eleganckie rozwiązanie, które wypróbowałem tam, gdzie pozwalam npm wykonać całą pracę za mnie.
# On Linux Mint 19.1 Cinnamon
# First navigate to where your global packages are installed.
$ npm root # returns /where/your/node_modules/folder/is
$ cd /where/your/node_modules/folder/is # i.e for me it was cd /home/user/.npm-packages/lib/node_modules
Następnie, jeśli nie npm uninstall
lub npm remove
moduły te będą traktowane tak, jakby były normalne zależności od projektu. Po zakończeniu generuje nawet plik package-lock.json:
$ npm remove <package-name> # you may need sudo if it was installed using sudo
Wystarczy umieścić w konsoli:
lista sudo npm -g --depth = 0. | awk -F '' {print 2 USD} '| awk -F '@' {{print $ 1} '| sudo xargs npm remove -g
To dla mnie praca ...
awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}'
Objaśnienie: podział na spacje lub @, tylko dopasuj linie z @, nazwa modułu będzie drugą do ostatniej pasującą ($(NF-1)
), więc tylko drukuj jeśli nie jestnpm