Команда видалити всі модулі npm у всьому світі?


381

Чи є команда видалити всі глобальні модулі npm? Якщо ні, що ви пропонуєте?

Відповіді:


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 golf, це можна зробити в одній команді 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
Я перевстановлював усі пакунки, під час запуску npm installзнову зіткнувся з помилками EINTEGRITY . Мені довелося також видалити package-lock.jsonфайл.
ToastyMallows

для тих, хто перебуває у Windows, використовуючи совок, шлях: C: \ Users \ username \ scoop \ apps \ nodejs \ current \ bin \ node_modules
Аріель Мірра

176

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

Отже, я придумав власну модифікацію рішення Каї Стернада (з невеликою допомогою ідеї кашеміру ):

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для кожного модуля у списку.

Як і рішення Кая Стернада , воно працюватиме лише під * nix.


1
Де зберігаються ці файли, я ненавиджу цей метод. Хіба десь не є просто глобальний package.json?
Еван Керролл

2
@EvanCarroll Nope, такого файлу немає, але він npmвстановлює всі його глобальні модулі в один і той же каталог. Точне місце розташування може відрізнятися, але зазвичай це /usr/local/lib/node_modules.
Леонід Бещасний

3
Тільки FYI, Цей також видаляє 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
Джек 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

там воно іде, ваш npm!
Усі Іѕ Вааііти

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;

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/isissue/10187

Як ви можете видалити всі залежності, перелічені в package.json (NPM)?


Люблю це. Швидше і простіше :) Я щойно використав grep -v, npmа nдоtr
apnerve

16

у вікні перейдіть до каталогу "C: \ Користувачі {ім'я користувача} \ AppData \ Роумінг" та видаліть папку 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

Це солідна відповідь зі jsonстилем apropos .
Річард Айотт

Якщо потрібне npm ls -g --json --depth=0 | jq -r '.dependencies|keys-["npm"]|join("\n")' | xargs sudo npm rm -g
Роджер

5

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

Я помітив на linux, що глобальний корінь справді глобальний для системи замість даного користувача. Тож видалення глобального кореня може бути не дуже хорошою ідеєю для спільної системи. Що вбік, я можу перенести скрипт, щоб бити, якщо зацікавлений.

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

3

Використовуйте цей код, щоб видалити будь-який пакет:

npm rm -g <package_name>

1
У питанні чітко сказано ВСЕ, а не конкретна назва пакета.
Полв

2

Все, що ви добре зробили. Це об'єднані пропозиції в один код рядка.

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

Чим відрізняється? Видалення буде виконано в одній команді, наприклад:npm rm -g *** *** ***


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

Сподіваюсь, це допоможе комусь із вікон


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.


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

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


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  

-1

sed розчин

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

-5

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

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

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


1
Точний копт рішення, вже згадуваний тут , на цій самій самій сторінці.
ivarni
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.