Как удалить пакет 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? Безопасно ли просто удалить его?

1884   4  

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 на текущего пользователя:

    сказав это, если вы хотите установить глобальный модуль без использования 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, установленные от его имени."

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

    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

      Ничего не найдено.