Как удалить пакет npm?

Я установил grunt с помощью sudo npm install grunt и я не могу удалить его.

Я попробую:

$ sudo npm uninstall grunt

но ей дают предупредить:

npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"

Я также попробовал rm, удалить и разорвать связь. и -g вариант, он дает:

npm WARN uninstall not installed in /usr/lib/node_modules: "grunt"

но я все еще могу называть grunt из командной строки.

редактировать:

$ whereis grunt
grunt: /usr/local/bin/grunt
$ file /usr/local/bin/grunt
/usr/local/bin/grunt: symbolic link to `../lib/node_modules/grunt/bin/grunt'
$ ls /usr/local/lib/node_modules
grunt jshint
$ ls /usr/lib/node_modules
bower  csslint  devtools-terminal  npm  plato

почему у меня есть 2 каталога с npm? Безопасно ли просто удалить его?

4 ответов


удалить npm модуль из проекта node_modules папку, выполните:

npm uninstall <module> --save

обратите внимание, что npm модули должны быть удалены из того же каталога, который содержит в корне проект)

...или:

npm install <module> --save-dev (если вы хотите добавить минимальную версию с зависимостями)

хорошие вещи, чтобы знать о грунт:

  • если вы установили grunt стабильный до 18 февраля 2013 года (день grunt v0.4.x был освобожден), у вас может быть более старый grunt версия все еще задерживается в вашей системе. Это потому что grunt версии ниже, чем глобально, что вызвало много боли при обновлении / обслуживании версий.
  • grunt и grunt-cli это две разные вещи.

    • grunt (без "cli") обычно устанавливается на уровне проекта (если указан как devDependency на package.json) под управлением npm install. Это также известно как локальная установка.
    • grunt-cli является основой, на которой локальные версии grunt run в разных проекты/папки. Это can устанавливается локально, но более полезно при установке глобально, один раз.
  • grunt устанавливается только локально (с помощью команды npm install grunt).

  • grunt-cli is желательно установлен глобально (с помощью команды npm install -g grunt-cli). grunt-cli официальный npm страница по-прежнему предостерегает от установка grunt (без cli) глобально.
  • если вы хотите удалите глобальную установку grunt-cli, используя npm uninstall -g grunt-cli. этот вопрос on gruntjsпроект поддерживает эту процедуру.
  • никогда не устанавливайте grunt (под управлением npm install -g grunt).

On npm и sudo

sudo не любит npm. Используй его, только если нужно. Ниже приведены две цитаты о достоинствах и недостатках его использовать:

цитирую Исаак З. Шлютер на введение в НПМ статьи:

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

рекомендую делая это один раз вместо:

sudo chown -R $USER /usr/local

это устанавливает вашу учетную запись пользователя как владельца каталога / usr / local, так что вы можете просто отдавайте обычные команды. Тогда вам никогда не придется использовать sudo, когда вы установите узел или выполните команды npm.

так гораздо лучше. в конце концов, /usr/local должен быть тем, что вы установили.

еще один улов, упомянутый Андрей Karpushonak:

существуют определенные проблемы безопасности и функциональные ограничения что касается изменения права собственности /usr / local на текущего пользователя:

сказав это, если вы хотите установить глобальный модуль без использования sudo, Я не вижу лучшего решения (с прагматической точки зрения), чем упомянутые. Security vs easy of use-очень широкая тема, и на нее нет простого ответа - это зависит от ваших требований.


то же самое случилось со мной. По делу

which grunt

я получил путь / usr / local/bin/. Внутри была папка. Но при выполнении команды (даже из пути / usr / local/bin/):

sudo npm uninstall -g grunt

получил предупреждение удаление не установлено

решение: оказывается, я установил с помощью команды

sudo npm install -g grunt-cli

и при попытке удалить просто набирал grunt

Итак, как только я бегу

sudo npm unistall -g grunt-cli 

грунт есть удаленный.

хотя у вас есть упоминание в вопросе, что вы запускаете

sudo npm install grunt

но все же проверьте, делаете ли вы ту же ошибку и запустите ее с помощью grunt-cli


в некоторых случаях может потребоваться использовать функцию npm "удалить пакет".

npm-удалить пакет

описание

" это удаляет пакет, полностью удаляя все npm, установленные от его имени."

в третьем блоке кода Вы разместили следующее сообщение:

npm WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"

Я нашел, что с помощью

which grunt 

или

whereis grunt 

команды в CLI / консоли обеспечивает неполный и запутанный выход.

обе эти команды вернут путь грунт-интерфейс командной строки установка, но верните это просто как грунт.

также, используя,

which grunt-cli

или

whereis grunt-cli

не удается вернуть любой вывод в консоль CLI. Я считаю, что это проблема/функция пространства имен с npm.

у меня также была ситуация, когда я не смог удалить grunt-cli с функцией удаления npm, как рекомендовано другими участниками выше.

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

npm rm -g grunt-cli

это должно вернуть следующее на вашу консоль.

unbuild grunt-cli@#.##.#

Удачи!


используйте сначала этот

which grunt-cli

или

which grunt

и это покажет вам путь к модулю

в моем случае это было в /usr / local/bin/

как только я попал в папку bin, я просто написал

sudo rm grunt

и на этом все закончилось:)