Polecenie usunięcia wszystkich modułów npm globalnie?


381

Czy istnieje polecenie usunięcia wszystkich globalnych modułów npm? Jeśli nie, co sugerujesz?

Odpowiedzi:


501

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=0wyś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ą potok

3
Aby nie być facetem od awk golfa, można to zrobić za pomocą jednego polecenia awk bez grep: 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
Fotios

28
Ostrzeżenie: nowa wersja nie odfiltrowuje modułu npm. Nie chcesz tego usuwać.
neverfox

9
Uruchomiłem także nową wersję bez czytania komentarzy. ZAWSZE PRZECZYTAJ UWAGI. Oto jak przywrócić NPM: curl npmjs.org/install.sh | sh
Jack Allan

12
Łał. NPM nie ułatwia odinstalowywania rzeczy. W pakiecie i klejnotach odinstalowanie wszystkiego jest banalne, a fakt, że musisz używać grep, jest okropnym projektem. Czy istnieje prostszy sposób na zrobienie tego? Kto tak naprawdę pamięta kod wymagany w odpowiedzi?
Brian Drogi

15
@neverfox i inne: Naprawiono, sam npm nie jest już usuwany. Przepraszamy za niedogodności
Kai Sternad

268

Dla 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%/npmw Eksploratorze, w wierszu polecenia lub z menu Start.


5
Dzięki za ten, co z npm-cache, powinienem to również usunąć?
Neil,

2
nie usuwaj folderu npm, jeśli tam jest
AutomatedMike

W późniejszych wersjach npm wydaje się, że zostało to przeniesione %USERPROFILE%\AppData\npmbez roaming.
Liam,

1
Podczas ponownej instalacji wszystkich pakietów napotkałem błędy EINTEGRITY npm install. Musiałem też usunąć package-lock.jsonplik.
ToastyMallows,

dla tych w systemie Windows, którzy używają szufelki, ścieżka jest następująca: C: \ Users \ nazwa użytkownika \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ariel Mirra

176

Próbowałem Kai Sternad „s rozwiązanie ale wydawało mi się to niedoskonałe. Po ostatnim awkz 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=0wyś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.


1
Gdzie są przechowywane te pliki, nie znoszę tej metody. Czy gdzieś nie jest tylko globalny pakiet.json?
Evan Carroll,

2
@EvanCarroll Nie, nie ma takiego pliku, ale npminstaluje 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.
Leonid Beschastny,

3
Tylko do twojej wiadomości, ten usuwa również npm
BrDaHa

11
To polecenie działa na OSX i nie usuwa npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate

2
To polecenie nie obsługiwało pakietu o podobnym zakresie (jak @angular/cli). Dodaję kolejny awkelement 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
Jack Q

64
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ów
  • awk -F ' ' '{print $2}' pozbywa się ├──
  • awk -F '@' '{print $1}' dostaje część przed „@”
  • sudo xargs npm remove -g usuwa pakiet globalnie

Ta wersja działała dla mnie najlepiej od czerwca '14. Jedynym dodatkiem może być odfiltrowanie zależności „UNMET” z listy, ale to nie jest krytyczne, podobnie jak npm remove UNMETNOOP.
kangax

4
dodałbym, grep -v npmaby 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
brauliobo

proszę bardzo, wasza npm!
Wszystkie są

26

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

22

Po prostu przejdź do %appdata%/npmkatalogu 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)?


Kocham to. Szybsze i proste :) Właśnie użyłem grep -v, npma nprzedtr
apnerve

16

w systemie Windows przejdź do katalogu „C: \ Users {nazwa użytkownika} \ AppData \ Roaming” i ręcznie usuń folder npm


1
Było to dla nas proste / przydatne w systemie Windows tutaj. Dzięki.
rob2d

14

Jeśli chcesz usunąć wszystkie zainstalowane pakiety, możesz użyć npm -g lspolecenia, aby je znaleźć, a następnie npm -g rmje usunąć.


7

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

To solidna odpowiedź w jsonstylu apropos .
Richard Ayotte,

Jeśli wymagane jest sudo:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Roger,

5

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%

3

Użyj tego kodu, aby odinstalować dowolny pakiet:

npm rm -g <package_name>

1
Pytanie wyraźnie brzmiało WSZYSTKO, a nie konkretna nazwa pakietu.
Polv

2

Wszystko, co zrobiłeś dobrą robotę. Jest to połączone sugestie w jeden kod linii.

npm rm -g `npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | tr '/\n' ' '`

Co jest inne Odinstalowanie zostanie wykonane za pomocą jednego polecenia, takiego jak:npm rm -g *** *** ***


2

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.


1

Cóż, jeśli jesteś w systemie Windows i chcesz usunąć / odinstalować wszystkie moduły node_node, musisz wykonać następujące kroki.

  1. Przejdź do wiersza polecenia systemu Windows
  2. Przejdź do katalogu node_modules ( nie w folderze node_modules )
  3. 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


1

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.


1

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.


0
npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g


0

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 uninstalllub npm removemoduł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  

-1

roztwór sed

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g

-5

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 ...


1
Dokładny kopt rozwiązania już wspomnianego tutaj , na tej samej stronie.
ivarni
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.