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

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


person EhevuTov    schedule 14.02.2012    source источник


Ответы (24)


Следующая команда удаляет все глобальные модули 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 удаляет все модули глобально, которые идут по предыдущему каналу
person Kai Sternad    schedule 14.02.2012
comment
Почти, это тоже нужно для команды npm ls. Я пытался исправить это сам, но правки должны быть не менее 6 символов ... - person Bill; 15.02.2012
comment
Будет ли эта команда работать под Ubuntu 12.04? Я попытался запустить команду от имени пользователя root, но она все равно не сработала. - person Anderson Green; 01.10.2012
comment
Чтобы не быть сторонником awk-гольфа, это можно сделать с помощью одной команды awk без grep: awk -F' |@' '/@/ {if ($(NF-1) != "npm") {print $(NF-1)}}' Объяснение: разделить на пробелы или @, сопоставить только строки с @, имя модуля будет предпоследним совпадением ($(NF-1)), поэтому печатать только если это не npm - person Fotios; 11.07.2013
comment
Мне пришлось изменить последний xargs npm -g rm на xargs npm -g uninstall, чтобы он работал на моей машине - person SyntaxRules; 08.08.2013
comment
В моей системе Ubuntu это тоже не сработало, дерево не было удалено (не знаю почему ...). Я тоже попробовал заменить регулярное выражение sed, но безуспешно, но Perl работал: npm -g ls | grep -v 'npm @' | perl -pe 's / [^ [: ascii:]] // g;' | awk -F @ '{print $ 1}' | grep -v / usr / local | xargs sudo npm -g rm (/ usr / local появилась как первая строка, пришлось удалить ее ...) - person Rohit Chatterjee; 12.10.2013
comment
Просмотрите, что это удалит, заменив xargs npm -g rm на xargs -L1 echo. Я думаю, что npm ls -gp в начале должно быть npm -ls -p. - person fisherwebdev; 27.12.2013
comment
@fisherwebdev npm ls -p (ls без тире) верен - person Kai Sternad; 27.12.2013
comment
Предупреждение: новая версия не отфильтровывает модуль npm. Вы не хотите его удалять. - person neverfox; 20.03.2014
comment
Я также запустил новую версию, не читая комментариев. ВСЕГДА ЧИТАЙТЕ КОММЕНТАРИИ. Вот как восстановить NPM: curl npmjs.org/install.sh | ш - person Jack Allan; 09.07.2014
comment
Недавно установщик npm был удален, вместо этого вам нужно переустановить node. На Mac с brew можно просто brew update; brew upgrade node. - person Emil Stenström; 09.06.2015
comment
curl -L https://www.npmjs.com/install.sh | sh - Я не обратил внимания и пропустил отсутствующий https: //, когда скопировал из ответа @Jack. Также стоит отметить gist.github.com/DanHerbert/9520689 (не я). - person Dan; 22.06.2015
comment
Вот это да. NPM не упрощает удаление вещей. С Bundler и гемами удалить все тривиально, тот факт, что вам нужно использовать grep, и это ужасный дизайн. Есть способ сделать это попроще? Кто на самом деле помнит код, который требуется в ответе? - person Brian Dear; 31.08.2015
comment
С таким же успехом можно избавиться от глобального npm и подумать о его переустановке через nvm install node, см. github.com/creationix/nvm - person lionello; 16.02.2016
comment
OMG, трубы, awk! Это не будет работать из win cmd из коробки. - person Dzmitry Prakapenka; 12.04.2016
comment
@ Neverfox и другие: исправлено, сам npm больше не удаляется. Извините за беспокойство - person Kai Sternad; 04.05.2016
comment
@KaiSternad Я бы перепроверил? вроде все-таки удалили на CentOS 7 - person Félix Adriyel Gagnon-Grenier; 05.10.2016
comment
При этом не удаляются модули, в названии которых есть /, например. @ angular / cli. - person Sergei Krupenin; 15.04.2020
comment
попробуйте библиотеку node cli, которую я написал несколько месяцев назад, которая поможет удалить все node_modules в системе. github.com/uttesh/mo - person Uttesh Kumar; 21.08.2020

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

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

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

person Ollie Bennett    schedule 24.03.2013
comment
Спасибо за это, а как насчет npm-cache, мне тоже следует удалить его? - person Neil; 10.05.2013
comment
не удаляйте папку npm, если она там есть - person AutomatedMike; 03.11.2017
comment
В более поздних версиях npm это похоже на %USERPROFILE%\AppData\npm без roaming. - person Liam; 16.03.2018
comment
Я переустанавливал все пакеты, при повторном запуске npm install столкнулся с ошибками EINTEGRITY. Мне также пришлось удалить свой package-lock.json файл. - person ToastyMallows; 25.04.2018
comment
для тех, кто в Windows использует scoop, путь: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules - person Ariel Mirra; 20.09.2019
comment
@Neil очистка кеша npm --force - person Yatin Kanyal; 10.07.2020
comment
Если вы используете nvm для Windows, то ваша папка node_modules будет расположена по адресу C:\Users\[username]\AppData\Roaming\nvm\[version]\node_modules - person Tim Hutchison; 08.03.2021
comment
Спасибо. Оно работает - person Yevhenii Chykalov; 25.03.2021
comment
Мне также пришлось удалить C:\Users\[username]\node_modules - person Menas; 29.06.2021

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

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

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.

person Leonid Beschastny    schedule 14.10.2013
comment
Где хранятся эти файлы, ненавижу этот метод. Разве где-то нет глобального package.json? - person Evan Carroll; 07.04.2014
comment
@EvanCarroll Нет, такого файла нет, но npm устанавливает все свои глобальные модули в тот же каталог. Точное местоположение может отличаться, но обычно это /usr/local/lib/node_modules. - person Leonid Beschastny; 08.04.2014
comment
Просто к сведению, этот также удаляет npm - person BrDaHa; 04.11.2014
comment
@BrDaHa хм, спасибо, я проверю. Но это странно, поскольку я явно фильтрую npm. - person Leonid Beschastny; 04.11.2014
comment
@BrDaHa только что проверил его на моем ubuntu с помощью npm 1.4.21, и он работал нормально. Хотя он пытался удалить n диспетчер бинарных узлов и node-gyp конструктор надстроек, но не npm. - person Leonid Beschastny; 04.11.2014
comment
Я использовал эту команду в OSX Mavericks. Nbd, я все равно переустанавливал весь узел :) - person BrDaHa; 04.11.2014
comment
Эта команда вернет ошибку, если не установлено никаких модулей, кроме npm (она не возвращает код 0 для «идеального» ранее существовавшего состояния). - person dps; 11.06.2015
comment
@dps спасибо! Теперь он должен работать нормально, даже если не установлено никаких других модулей, кроме npm. - person Leonid Beschastny; 12.06.2015
comment
Эта команда работает в OSX и не удаляет npm npm ls -gp --depth=0 | awk -F/node_modules/ '{print $2}' | grep -vE '^(npm)$' | xargs npm -g rm - person real_ate; 03.07.2015
comment
grep не работал, жалуясь на пустые подшаблоны. Также не отфильтровывались ошибки npm. Это исправляет следующее (с использованием OS X): npm ls -gp --depth=0 --silent | awk -F/node_modules/ '{print $2}' | sed '/^$/d; /^npm$/d;' | xargs npm -g rm - вместо этого решено использовать sed - person Luke; 21.04.2016
comment
@LeonidBeschastny Я изменил и исправил свой ответ, не могли бы вы изменить свой соответственно? Спасибо. - person Kai Sternad; 24.06.2016
comment
@KaiSternad Я пробовал оба наших решения с несколькими _1 _ / _ 2_ версиями. npm модуль каждый раз эффективно отфильтровывался. Я также не заметил отличий от вашего последнего редактирования. Я предполагаю, что люди соглашаются с удалением npm, потому что npm@3 сглаживает дерево зависимостей, поэтому оба наших решения могут удалить некоторые из его зависимостей, тем самым нарушив его. - person Leonid Beschastny; 26.06.2016
comment
Эта команда не смогла обработать пакет с ограниченной областью видимости (например, @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 - person Jack Q; 17.07.2017

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 удаляет пакет глобально
person cashmere    schedule 10.03.2014
comment
Эта версия работала у меня лучше всего по состоянию на июнь 2014 года. Единственное дополнение может заключаться в том, чтобы отфильтровать зависимости UNMET из списка, но это не критично, поскольку npm remove UNMET просто выполняет NOOP. - person kangax; 08.06.2014
comment
добавил бы 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 - person brauliobo; 23.03.2015
comment
вот оно что, ваш npm! - person All Іѕ Vаиітy; 22.04.2017

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

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

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

npm cache clear
person Kedar Vaidya    schedule 27.06.2015

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

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

EDIT: эта команда прерывается с 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)?

person jedmao    schedule 24.06.2014
comment
Люблю это. Быстрее и проще :) Я просто использовал grep -v npm и n перед tr - person apnerve; 12.01.2018

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

person Bill    schedule 14.02.2012

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

person pradeep karunathilaka    schedule 26.06.2018
comment
Это было просто / полезно для нас в Windows здесь. Спасибо. - person rob2d; 01.08.2018

Если у вас установлен 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
person eush77    schedule 25.05.2015
comment
Это твердый ответ в подходящем стиле json. - person Richard Ayotte; 10.10.2015
comment
Если требуется sudo, то: npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g - person Roger; 18.12.2019

ОС не указана 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%
person bvj    schedule 09.04.2017

Для 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.

person Polv    schedule 19.02.2020

Все вы молодцы. Это объединенные предложения в одну строку кода.

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

Что отличается? Удаление будет выполнено одной командой, например: npm rm -g *** *** ***

person FDisk    schedule 01.04.2019

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

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

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

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

person Sachin    schedule 02.12.2019

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

npm rm -g <package_name>
person user1452840    schedule 14.10.2013
comment
В вопросе четко сказано ВСЕ, а не конкретное имя пакета. - person Polv; 19.02.2020

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

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

     rmdir /s /q node_modules
    

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

person Anjum....    schedule 11.04.2015

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

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

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

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

person George Shalvashvili    schedule 09.03.2018

Для более ручного подхода, который не требует использования файловых обозревателей, не заботится о том, где находится установка, очень маловероятно, что он сломается позже, и на 100% кроссплатформенный, и кажется намного безопаснее из-за дополнительные шаги, используйте этот.

  • npm ls -g --depth=0
  • Копировать вывод
  • Вставить в любимый редактор кода (я использую vsCode. Отличное редактирование с несколькими курсорами)
  • Проверьте все пакеты, которые вы хотите сохранить (nodemon, yarn, и многие другие). Удалите эти строки.
  • Удалите все экземпляры +-- или других декораторов строк
  • Удалите всю информацию о версии (например, "@2.11.4")
  • Поместите все элементы в одну строку, разделив пробел
  • Add npm uninstall -g to beginning of that one line.
    • Mine looks like npm uninstall -g @angular/cli @vue/cli express-generator jest mocha typescript bindings nan nodemon yarn, but I didn't install many packages globally on this machine.
  • Копировать строку
  • Вставьте в терминал, нажмите Enter, если он еще не добавлен из копии / вставки
  • Ищите ошибки в терминале.
  • Проверьте npm ls -g, чтобы убедиться, что он завершен. Если что-то переустановили, промойте и повторите

Другие подходы, основанные только на cli, отлично подходят для администраторов компьютеров, которые делают что-то для 100 почти идентичных компьютеров одновременно с одного и того же ssh или, возможно, с помощью Puppet. Но если вы делаете это только один раз или даже 5 раз в год, это намного проще.

person RoboticRenaissance    schedule 03.01.2021

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

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

person Giwan    schedule 19.12.2019

Вот более элегантное решение, которое я пробовал, где всю работу за меня выполняет 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  
person IskandarG    schedule 30.03.2020

Если у вас установлен MSYS для Windows:

rm -rf ${APPDATA//\\/\/}/npm
person mekb    schedule 22.07.2020

В npm README.md говорится:

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

Чтобы удалить мусор, оставленный npm 0.x, вы можете использовать включенный файл сценария clean-old.sh. Вы можете запустить его так:

   npm explore npm -g -- sh scripts/clean-old.sh
person scripter    schedule 28.08.2020

Я считаю, что в macOS вы можете просто удалить папку .npm-global в своем каталоге User.

.npm и .npm - глобальные папки в каталоге пользователя macOS:
. npm и .npm-глобальные папки в каталоге пользователя macOS

person Community    schedule 30.08.2020

решение sed

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

Просто введите в консоль:

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

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

person busterkika    schedule 04.04.2016
comment
Точная копия решения уже упоминалась здесь, на этой же странице. - person ivarni; 28.07.2016