Подтвердить что ты не робот

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

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

Я попробовал:

$ sudo npm uninstall grunt

но он дает WARN:

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? Можно ли просто удалить его?

4b9b3361

Ответ 1

Чтобы удалить модуль npm из папки проекта node_modules, запустите:

npm uninstall <module> --save

Обратите внимание, что при выполнении этой команды модули npm должны быть удалены из того же каталога, который содержит папку node_modules. Опция --save также удалит ее из package.json

Можно также удалить локальную установку зависимости/модуля, удалив ее каталог из локальной папки node_modules. Да, безопасно удалять там зависимости.

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

npm uninstall -g <module>

Не имеет значения, откуда вы запускаете эту команду.

Чтобы установить модуль npm, запустите: (только в качестве ссылки)

npm install <module>

... или:

npm install (если в корневом каталоге вашего проекта есть файл package.json)

... или:

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

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

  • Если вы установили grunt stable до 18 февраля 2013 года (был выпущен день grunt v0.4.x), у вас может быть более старая grunt версия по-прежнему сохраняется в вашей системе. Это потому, что версии grunt ниже 0.4.x были установлены глобально, что вызвало большую боль при обновлении/сохранении версий.
  • 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 (без cli) по всему миру.
  • Если вы хотите удалить глобальную установку grunt-cli, запустите npm uninstall -g grunt-cli. Эта проблема в gruntjs поддерживает эту процедуру.
  • Никогда не устанавливайте grunt глобально (запустив npm install -g grunt).

Вкл npm и sudo

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

Цитата Исаака З. Шлютера о его Введение в npm:

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

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

sudo chown -R $USER /usr/local

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

Это намного лучше. Предполагается, что /usr/local - это материал, который вы установили.

Еще один улов, упомянутый Андреем Карпушонаком:

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

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

Ответ 2

То же самое случилось со мной. При выполнении

which grunt

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

sudo npm uninstall -g grunt

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

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

sudo npm install -g grunt-cli

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

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

sudo npm unistall -g grunt-cli 

grunt удалили.

Хотя вы упомянули о том, что вы запускаете

sudo npm install grunt

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

Ответ 3

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

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

Описание

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

На вашем третьем блоке кода вы отправили это сообщение:

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

Я обнаружил, что с помощью

which grunt 

или

whereis grunt 
Команды

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

Обе эти команды вернут путь к установке grunt-cli, но верните ее просто как grunt.

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

which grunt-cli

или

whereis grunt-cli

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

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

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

npm rm -g grunt-cli

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

unbuild [email protected]#.##.#

Удачи!

Ответ 4

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

which grunt-cli

Или

which grunt

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

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

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

sudo rm grunt

И это было концом этого:)