Как мне установить модуль глобально, используя npm?


202

Я недавно установил Node.js и модуль npm на OSX, и у меня возникли проблемы с настройками:

npm install [MODULE] is not installing the node.js module to the default path 
which is /usr/local/lib/node_modules.

Ответы:


347

Если вы хотите установить модуль npm в глобальном масштабе, обязательно используйте новый -g флаг, например:

npm install forever -g

Общие рекомендации по установке модуля npm начиная с 1.0rc (взяты из blog.nodejs.org ):

  • Если вы устанавливаете что-то, что хотите использовать в своей программе, используя require («что угодно»), то устанавливайте это локально , в корне вашего проекта.
  • Если вы устанавливаете что-то, что хотите использовать в своей оболочке, в командной строке или что-то еще, установите это глобально , чтобы его двоичные файлы попали в переменную среды PATH.

Я только недавно использовал эти рекомендации, и все прошло довольно гладко. Я навсегда установил глобально (поскольку это инструмент командной строки) и все мои модули приложения локально.

Однако, если вы хотите использовать некоторые модули глобально (например, express или mongodb), воспользуйтесь этим советом (также взятым из blog.nodejs.org ):

Конечно, есть некоторые случаи, когда вы хотите сделать оба. Coffee-script и Express являются хорошими примерами приложений, которые имеют интерфейс командной строки, а также библиотеки. В этих случаях вы можете выполнить одно из следующих действий:

  • Установите его в обоих местах . Серьезно, тебе не хватает места на диске? Это нормально, правда. Это крошечные JavaScript-программы.
  • Установите его глобально, а затем npm link coffee-script или npm link express (если вы работаете на платформе, поддерживающей символические ссылки). Тогда вам нужно всего лишь обновить глобальную копию, чтобы обновить также и все символические ссылки.

Первый вариант самый лучший на мой взгляд. Просто, понятно, явно. Второе действительно удобно, если вы собираетесь повторно использовать одну и ту же библиотеку в нескольких разных проектах. (Подробнее о ссылке в npm в следующей части.)

Я не тестировал ни одну из этих вариаций, но они кажутся довольно простыми.


7
Спасибо за разъяснения. Айзекс должен заменить весь man-файл npm и git wiki приведенным выше текстом. Мог бы прояснить массовую путаницу.
Mauvis Ledford

shweeet. Это пригодилось, я был пойман этим изменением. В какой-то момент npm install предоставил доступ к командной строке, затем он исчез, и я недостаточно внимательно следил за проектом, чтобы уловить переход.
Марк Эссель

Это объясняет, почему у меня был модуль узла в моем каталоге конфигурации Apache. , ,
Ян Хантер

1
От blog.node.js.org : Обычно глобальные двоичные файлы устанавливаются в {prefix} / bin, а глобальные модули устанавливаются в {prefix} / node_modules, а локальные модули находятся в ./node_modules, исполняемые файлы находятся в ./node_modules/.bin/ , Вы можете запустить, npm prefixчтобы получить локальный префикс и node prefix -gувидеть глобальный префикс :)
nacho4d

«Если вы устанавливаете что-то, что хотите использовать в своей программе, используя require (« что угодно »), то устанавливайте это локально , в корне вашего проекта». - Я думаю, это не очень хорошая идея, если модуль содержит скомпилированный бинарный файл: его нужно правильно перекомпилировать в Linux и Windows. Я думаю, что такого рода модули должны быть установлены с помощью среды NODE_PATH vriable ( nodejs.org/api/… )
Снег

8

На Mac я обнаружил, что вывод содержит информацию, которую я искал:

$> npm install -g karma
...
...
> ws@0.4.25 install /usr/local/share/npm/lib/node_modules/karma/node_modules/socket.io/node_modules/socket.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
...
$> ls /usr/local/share/npm/bin
karma nf

После добавления /usr/local/share/npm/binк export PATHлинии в моем .bash_profile, сохранив его, и sourceING, я был в состоянии работать

$> karma --help

как обычно.



2

У меня были проблемы с установкой Express на Ubuntu:

Если по какой-либо причине команда NPM отсутствует, проверьте команду npm с помощью npm help. Если нет, выполните следующие действия - http://arnolog.net/post/8424207595/install-node-js-npm-express-mongoose-on-ubuntu

Если только команда Express не работает, попробуйте:

sudo npm install -g express

Это заставило все работать, как я привык с Windows7 и OSX.

Надеюсь это поможет!




-5

Возможно, у вас нет прав на запись для установки модуля узла в глобальном расположении, например /usr/local/lib/node_modules, в этом случае запустите пакет npm install -g от имени пользователя root.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.