Команда удалить все модули npm глобально? - PullRequest
335 голосов
/ 15 февраля 2012

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

Ответы [ 18 ]

451 голосов
/ 15 февраля 2012

Следующая команда удаляет все глобальные модули 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 удаляет все модули глобально, которые приходят по предыдущему каналу
234 голосов
/ 24 марта 2013

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

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

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

174 голосов
/ 14 октября 2013

Я пытался Кай Стернад решение , но оно показалось мне несовершенным. После последнего 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.

59 голосов
/ 10 марта 2014
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 глобально удаляет пакет
22 голосов
/ 25 июня 2014

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

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

РЕДАКТИРОВАТЬ: Эта команда прерывается с npm 3.3.6 (узел 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)?

21 голосов
/ 27 июня 2015

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

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

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

npm cache clear
12 голосов
/ 15 февраля 2012

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

8 голосов
/ 26 июня 2018

в окнах Путь «C: \ Users \ username \ AppData \ Roaming» и вручную удалите папку npm

6 голосов
/ 25 мая 2015

Если у вас установлено 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
4 голосов
/ 10 апреля 2017

ОС не указана в OP.Для 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%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...