Як встановити модуль глобально за допомогою 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 ):

  • Якщо ви встановлюєте те, що ви хочете використовувати у своїй програмі, використовуючи вимагати ("що завгодно"), то встановіть його локально , в корені вашого проекту.
  • Якщо ви встановлюєте щось, що ви хочете використовувати у своїй оболонці, у командному рядку чи щось інше, встановіть це глобально , щоб його бінарні файли опинилися у вашій змінній середовища PATH.

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

Однак якщо ви хочете використовувати деякі модулі в усьому світі (наприклад, express або mongodb), скористайтеся цією порадою (також взято з blog.nodejs.org ):

Звичайно, є деякі випадки, коли ви хочете зробити і те, і інше. Кава-скрипт та Express - хороші приклади програм, які мають інтерфейс командного рядка, а також бібліотеку. У цих випадках ви можете зробити одне з наступного:

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

Перший варіант - найкращий на мій погляд. Просте, чітке, явне. Друге дійсно зручно, якщо ви збираєтеся повторно використовувати ту саму бібліотеку у купі різних проектів. (Детальніше про посилання npm у майбутньому внеску.)

Я не перевіряв жодної з цих варіацій, але вони здаються досить відвертими.


7
Дякую за роз’яснення Isaacs повинен замінити весь npm manfile та git wiki вищевказаним текстом. Не вдалося б усунути масову плутанину.
Мавіс Ледфорд

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

"Якщо ви встановлюєте щось, що ви хочете використовувати у вашій програмі, використовуючи вимагати (" що завгодно "), то встановіть його локально , в корені вашого проекту." - Я думаю, що це не гарна ідея, якщо модуль містить компільований двійковий код: його треба перекомпілювати на Linux та Windows належним чином. Я думаю , що такого роду модулі повинні бути встановлені з використанням NODE_PATH середовища vriable ( nodejs.org/api / ... )
Sneg

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, збереження та sourceпродовження, я зміг запустити

$> karma --help

нормально.


4

Мені подобається використовувати файл package.json у корені папки вашого додатка.

Ось один я використовую

nvm use v0.6.4

http://pastie.org/3232212

npm install

2

У мене виникли проблеми з установкою Express на Ubuntu:

Якщо з якоїсь причини команда NPM відсутня, випробуйте команду npm за допомогою npm help. Якщо цього немає, виконайте наступні дії - http://arnolog.net/post/8424207595/installing-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.