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

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

32 ответа

Решение

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

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

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

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

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

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 удаляет пакет глобально

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

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

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

npm cache clear

Просто переключитесь на свой %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)?

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

В Windows используйте путь "C:\Users\username\AppData\Roaming" и вручную удалите папку npm

Если у вас установлен 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

ОС не указана в ОП. В 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%

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

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

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

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

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

npm rm -g <package_name>

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

  • npm ls -g --depth=0
  • Копировать вывод
  • Вставить в любимый редактор кода (я использую vsCode. Отличное редактирование с несколькими курсорами)
  • Проверьте все пакеты, которые вы хотите сохранить (nodemon, yarn, и многие другие). Удалите эти строки.
  • Удалите все экземпляры +-- или другие декораторы линий
  • Удалите всю информацию о версии (например, @2.11.4')
  • Поместите все элементы в одну строку, разделив пробел
  • Добавлять npm uninstall -g до начала этой строки.
    • Мой выглядит как npm uninstall -g @angular/cli @vue/cli express-generator jest mocha typescript bindings nan nodemon yarn, но я не устанавливал много пакетов глобально на эту машину.
  • Копировать строку
  • Вставьте в терминал, нажмите Enter, если он еще не добавлен из копии / вставки
  • Ищите ошибки в терминале.
  • Проверять npm ls -gчтобы убедиться, что он завершен. Если что-то переустановили, промойте и повторите

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

Для Windows:

      rmdir /s /q "%appdata%/npm"

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

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

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

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

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

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

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

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

Просто используйте ниже для MAC,

sudo rm -rf/usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man//node.}

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

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

     rmdir /s /q node_modules
    

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

Попробуйте это и скажите мне, что вы думаете

      npx npkill  

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

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

      sudo npm uninstall npm -g

Или, если это не поможет, получите исходный код npm и выполните:

      sudo make uninstall

Чтобы вручную удалить все, что связано с npm:

      rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/npm*
      npm list -g

покажет вам расположение глобально установленных пакетов.

Если вы хотите вывести их в файл:
npm list -g > ~/Desktop/npmoutputs.txt

      npm rm -g

удалит их

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

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

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

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

   npm explore npm -g -- sh scripts/clean-old.sh

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

rm -rf ${APPDATA//\\/\/}/npm

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

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

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

Если вы используете NVM для Windows, вам необходимо удалить все модули, которые вам не нужны внутри.node_modulesNode.js с версией, содержащей глобальные модули, которые вы хотите удалить. Не снимайте corepackи npmпакеты , необходимые для Node.js.

Папка может находиться в:

  • %USERPROFILE%\.nvm\{version}\node_modules.

    • %USERPROFILE%это ваша пользовательская папка.
    • — это версия Node.js, в которой вы хотите удалить глобальные модули.

    Пример:C:\Users\Cappuccino\.nvm\19.8.1\node_modules.

  • {installationPath}\{version}\node_modules.

    • {installationPath}здесь вы установили NVM для Windows.
    • {version}— это версия Node.js, в которой вы хотите удалить глобальные модули. Пример:D:\Programs\NVM\v19.8.1\node_modules.

Сед раствор

npm -gp ls | sed -r '/npm$|(node_modules.*){2,}/d; s:.*/([^/]+)$:\1:g' | xargs npm rm -g
Другие вопросы по тегам