Как удалить пакет 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 на текущего пользователя:
- если на машине есть другой пользователь, который может использовать 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, Я не вижу лучшего решения (с прагматической точки зрения), чем упомянутые. 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 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
и на этом все закончилось:)