Как удалить пакет 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 из командной строки.
EDIT:
$ 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модули должны быть удалены из того же каталога, который содержит глобально, что вызвало много боли при обновлении/поддержании версий.
gruntиgrunt-cliэто две разные вещи.
grunt(без "cli") обычно устанавливается на уровне проекта (если указан какdevDependencyнаpackage.json) под управлениемnpm install. Это также известно как локальная установка.grunt-cliявляется основой, на которой локальные версииgruntвыполнить в разных проекты/папки. Это можете устанавливается локально, но более полезно при установке глобально, один раз.
gruntустанавливается только локально (с помощью командыnpm install grunt).grunt-cliи желательно установлен глобально (с помощью командыnpm install -g grunt-cli).grunt-cliофициальныйnpmстраница все еще предупреждает против установкаgrunt(без командной строки) во всем мире.если вы хотите удалите глобальную установку grunt-cli, используяnpm uninstall -g grunt-cli. этот вопрос on gruntjsпроект поддерживает эту процедуру.никогда не устанавливайте grunt(под управлениемnpm install -g grunt).On
npmиsudo
sudoне любитnpm. Используйте его только в случае необходимости. Ниже приведены две цитаты о преимуществах и недостатках его использование:цитирую Isaac Z. Schlueter на введение в npm статьи:
я настоятельно рекомендую вам не делать управление пакетами с sudo! Пакеты могут запускать произвольные сценарии, что делает sudoing командой диспетчера пакетов так же безопасно, как стрижка бензопилой. Конечно, это быстро и определенно собирается сократить через любые препятствия, но вы действительно можете захотеть, чтобы это препятствие осталось там.
рекомендую делая это один раз вместо:
sudo chown -R $USER /usr/localэто устанавливает вашу учетную запись пользователя в качестве владельца каталога / usr / local, так что вы можете просто выдавайте там обычные команды. Тогда вам никогда не придется использовать sudo, когда вы установите узел или выполните команды npm.
так гораздо лучше. /usr / local должен быть тем, что вы установили, в конце концов.
еще один улов, упомянутый Андрей Карпушонак:
существуют определенные проблемы безопасности и ограничения функциональности что касается изменения владельца /usr / local на текущего пользователя:
- если на машине есть другой пользователь, который может использовать global пакеты npm-не меняйте владельца /usr / local
- https://apple.stackexchange.com/questions/1393/are-my-permissions-for-usr-local-correct
- https://askubuntu.com/questions/261326/is-it-safe-to-chown-usr-local
сказав это, если вы хотите установить глобальный модуль без использования sudo, Я не вижу лучшего решения (с прагматической точки зрения), чем упомянутые. Безопасность против простоты использования-это очень широкая тема, и на нее нет простого ответа - это просто зависит от ваших требований.
то же самое произошло и со мной. На делать
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 WARN uninstall not installed in /home/kuba/projects/node_modules: "grunt-cli"я обнаружил, что с помощью
which gruntили
whereis gruntкоманды в CLI / консоли обеспечивает неполный и запутанный вывод.
обе эти команды вернут путь 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и на этом все закончилось:)
Comments