Команда удалить все модули npm глобально?

381

Есть ли команда для удаления всех глобальных модулей npm? Если нет, что вы предлагаете?

EhevuTov
источник

Ответы:

501

Следующая команда удаляет все глобальные модули npm. Примечание: это не работает в Windows. Для работающей версии Windows, см . Ответ Олли Беннетта .

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

Вот как это работает:

  • npm ls -gp --depth=0выводит список всех глобальных модулей верхнего уровня (см. документацию по cli для ls )
  • awk -F/ '/node_modules/ && !/\/npm$/ {print $NF}'печатает все модули, которые на самом деле не являются npm (не заканчиваются /npm)
  • xargs npm -g rm удаляет все модули глобально, которые приходят по предыдущему каналу
Кай Стернад
источник
3
Чтобы не быть игроком в гольф awk, это можно сделать одной командой awk без grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Объяснение: разделить пробелами или @, сопоставлять только строки с @, имя модуля будет соответствовать последнему совпадению ( $(NF-1)), поэтому печатать только если это не такnpm
Фотиос
28
Предупреждение: новая версия не отфильтровывает модуль npm. Вы не хотите удалить это.
neverfox
9
Я также запустил новую версию, не читая комментарии. ВСЕГДА ПРОЧИТАЙТЕ КОММЕНТАРИИ. Вот как восстановить NPM: curl npmjs.org/install.sh | sh
Джек Аллан
12
Ух ты. NPM не позволяет легко удалять вещи. С бандлером и гемами тривиально удалить все, тот факт, что вы должны использовать grep, и это ужасный дизайн. Есть ли более простой способ сделать это? Кто на самом деле помнит код, требуемый в ответе?
Брайан Дорогой
15
@neverfox и другие: исправлено, сам npm больше не удаляется. Приносим извинения за неудобства
Кай Стернад
268

Для тех, кто использует Windows , самый простой способ удалить все глобально установленные пакеты npm - это удалить содержимое:

C:\Users\username\AppData\Roaming\npm

Вы можете быстро туда добраться, набрав %appdata%/npmв проводнике, в командной строке или в меню «Пуск».

Олли Беннетт
источник
5
Спасибо за это, как насчет npm-кеша, я должен удалить это также?
Нейл
2
не удаляйте папку npm, если она там есть
AutomatedMike
В более поздних версиях npm это, кажется, перенесено %USERPROFILE%\AppData\npmбез roaming.
Лиам
1
Я переустанавливал все пакеты, я столкнулся с ошибками EINTEGRITY при запуске npm installснова. Я должен был также удалить свой package-lock.jsonфайл.
ToastyMallows
для тех, кто в Windows использует scoop, путь: C: \ Users \ имя пользователя \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Ариэль Мирра
176

Я попробовал решение Кая Стернада , но оно показалось мне несовершенным. После самого последнего awkдерева deps осталось много специальных символов .

Итак, я придумал собственную модификацию решения Кая Стернада (с небольшой помощью от идеи кашемира ):

npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm|)$' | xargs -r npm -g rm

npm ls -gp --depth=0перечисляет все глобально установленные модули npm в разбираемом формате:

/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}' извлекает имена модулей из путей, формируя список всех глобально установленных модулей.

grep -vE '^(npm|)$' удаляет сам npm и пустые строки.

xargs -r npm -g rmвызовы npm -g rmдля каждого модуля в списке.

Как и решение Kai Sternad , оно будет работать только под * nix.

Леонид Бесчастный
источник
1
Где хранятся эти файлы, я ненавижу этот метод. Разве где-то нет только глобального package.json?
Эван Кэрролл
2
@EvanCarroll Нет, такого файла нет, но npmвсе его глобальные модули устанавливаются в один каталог. Точное местоположение может отличаться, но обычно это так /usr/local/lib/node_modules.
Леонид Бесчастный
3
Только к вашему сведению, этот также удаляет npm
BrDaHa
11
Эта команда работает на OSX и не удаляет npmnpm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm
real_ate
2
Эта команда не смогла обработать пакет с определенной областью (например @angular/cli). Я добавляю еще один сопоставитель для, awkи рабочая команда для меня выглядит следующим образом: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

работал на меня

  • sudo npm list -g --depth=0. список всех установленных верхних уровней
  • awk -F ' ' '{print $2}' избавляется от ├──
  • awk -F '@' '{print $1}' получает роль до '@'
  • sudo xargs npm remove -g удаляет пакет глобально
кашемир
источник
Эта версия работала лучше всего для меня на июнь 14 года. Единственным дополнением может быть отфильтровывание зависимостей «UNMET» из списка, но это не критично, как это npm remove UNMETделает NOOP.
Кангакс
4
добавил бы, grep -v npmчтобы сам npm не удалялся:sudo npm list -g --depth=0. | grep -v npm | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
brauliobo
вот оно, твой нпм!
Всех с нетерпением
26

Для тех, кто использует Powershell :

npm -gp ls --depth=0 | ForEach-Object { Get-Item $_ } | Where { $_.Name -ne 'npm' } | ForEach-Object { npm rm -g $_.Name }

Чтобы очистить кеш:

npm cache clear
Кедар Вайдья
источник
22

Просто переключитесь в свой %appdata%/npmкаталог и выполните следующее ...

for package in `ls node_modules`; do npm uninstall $package; done;

РЕДАКТИРОВАТЬ: Эта команда прерывается с npm 3.3.6 (Node 5.0). Сейчас я использую следующую команду Bash, которую я сопоставил с npm_uninstall_all в моем файле .bashrc:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`

Добавлен бонус? это намного быстрее!

https://github.com/npm/npm/issues/10187

Как удалить все зависимости, перечисленные в package.json (NPM)?

jedmao
источник
Люблю это. Быстрее и проще :) Я просто использовал grep -v npmи nпередtr
apnerve
16

в Windows перейдите в каталог «C: \ Users {имя пользователя} \ AppData \ Roaming» и вручную удалите папку npm

Прадип Карунатхилака
источник
1
Это было просто / полезно для нас на Windows здесь. Спасибо.
rob2d
14

Если вы хотите удалить все установленные вами пакеты, вы можете использовать npm -g lsкоманду, чтобы найти их, а затем npm -g rmудалить их.

Билл
источник
7

Если у вас установлен jq , вы можете работать даже без grep / awk / sed:

npm ls -g --json --depth=0 |
  jq -r '.dependencies|keys-["npm"]|join("\n")' |
  xargs npm rm -g

На Debian и производных вы можете установить jq с помощью:

sudo apt-get install jq
eush77
источник
Это солидный ответ с подходящим jsonстилем.
Ричард Айотт
Если требуется sudo, то:npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Роджер
5

ОС не указана в ОП. В Windows этот сценарий можно использовать для обнуления локальных и глобальных модулей и кеша пользователя.

В linux я заметил, что глобальный корень действительно глобален для системы, а не для данного пользователя. Поэтому удаление глобального корня может быть не очень хорошей идеей для общей системы. Помимо этого, я могу перенести скрипт на bash, если заинтересован.

Для Windows сохраните в файл cmd для запуска.

@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%
bvj
источник
3

Используйте этот код для удаления любого пакета:

npm rm -g <package_name>
user1452840
источник
1
На вопрос четко сказано ВСЕ, а не конкретное название пакета.
Polv
2

Все, что вы сделали хорошую работу. Это объединенные предложения в одной строке кода.

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

Какая разница? Удаление будет выполнено одной командой:npm rm -g *** *** ***

FDisk
источник
2

Вы можете найти все установленные пакеты npm по адресу:

C:\Users\username\AppData\Roaming\npm

и удалите содержимое npm, которое вы хотите удалить.

Если AppData не отображается, это означает, что он скрыт, и вы можете перейти к просмотру в проводнике и проверить скрытые элементы, тогда вы сможете увидеть все скрытые папки.

Сэчин
источник
1

Хорошо, если вы находитесь в Windows и хотите удалить / удалить все node_modules, то вам нужно выполнить следующие шаги.

  1. Перейти к командной строке Windows
  2. Перейдите в каталог node_modules ( не внутри папки node_modules )
  3. Введите команду ниже и дайте ей в течение 1-2 минут, она удалит все каталоги внутри node_module

     rmdir /s /q node_modules

Надеюсь, это поможет кому-то на Windows

Anjum ....
источник
1

если у вас есть Intellij Webstorm, вы можете использовать встроенный графический менеджер пакетов.

откройте его как root и создайте проект emtpy. перейти к

Файл> Настройки> Язык и рамки> Node.js и NPM

там вы увидите все установленные пакеты. Деинсталляция проста, вы можете выбрать и отменить выбор любого пакета, который вы хотите удалить, а также Ctrl + a woks.

Георгий Шалвашвили
источник
1

За yarn global

nano ~/.config/yarn/global/package.json
<Manually remove all packages from package.json>
yarn global add

Или, если вам все равно, что на самом деле внутри package.json

echo {} >  ~/.config/yarn/global/package.json && yarn global add

Это должно относиться и к NPM, но я не совсем уверен, где хранится NPM global.

Сополи
источник
0
npm ls -gp | awk -F/ '/node_modules/&&!/node_modules.*node_modules/&&!/npm/{print $NF}' | xargs npm rm -g
rxw
источник
0

Так как это лучший ответ в поиске, я выкладываю это здесь, так как это было решение, которое я использовал в прошлом для чистки компьютеров, переключающих ноутбуки.

cd ~/Documents # or where you keep your projects
find . -name "node_modules" -exec rm -rf '{}' +

источник: https://winsmarts.com/delete-all-node-modules-folders-recursively-on-windows-edcc9a9c079e

Giwan
источник
0

Вот более элегантное решение, которое я попробовал, когда я позволил npm сделать всю работу за меня.

# 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

Тогда , если вы npm uninstallили npm removeэти модули будут рассматриваться как если бы они были нормальными зависимости от проекта. Он даже генерирует файл package-lock.json, когда это будет сделано:

$ npm remove <package-name> # you may need sudo if it was installed using sudo  
IskandarG
источник
-1

сед раствор

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g
koola
источник
-5

Просто вставьте в вашу консоль:

Список sudo npm -g --depth = 0. | awk -F '' '{print $ 2}' | awk -F '@' '{print $ 1}' | sudo xargs npm удалить -g

Его работа для меня ...

busterkika
источник
1
Точное решение уже упоминалось здесь , на этой же странице.
ivarni