Де слід встановлювати мої модулі npm на Mac OS X?


84

Я намагався здійснити оновлення phonegapчерез, npmколи у мене почалися проблеми. Коротше кажучи, node_modulesна моєму комп’ютері є два каталоги.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules

Коли я запускаю npm upgrade -g phonegap, здається, що npmоновлює копію пакету, що знаходиться /usr/local/lib/node_modules. Однак, якщо я which phonegapвиявлю, що символічне посилання вказує на стару установку в /usr/local/share/npm/lib/node_modules.

Крім того, коли я намагаюся встановити самостійний пакет, наприклад express, файли встановлюються в /usr/local/lib/node_modulesкаталог, але жодне символьне посилання на виконуваний файл не створюється ніде в моєму $PATH.

Два питання:

  • Який відповідний каталог для вузлових модулів у Mac OS X?
  • Як налаштувати npmприв’язку виконуваних файлів до мого, $PATHколи він встановлює програмне забезпечення?

Бонусні бали: Чи впливає спосіб встановлення nodeна конфігурацію? Варіантів дуже багато .


EDIT : Я зрозумів, що символічні посилання створюються в моєму /usr/local/bin, але моє .bash_profileбуло налаштовано /usr/local/share/npm/binнаперед із /usr/local/binмого $PATH. Я неясно пам’ятаю, що колись додав цей шлях до свого профілю, але не знаю, чому.

Отже, зараз виникає запитання: як у мене з’явилися два різні node_modulesкаталоги на моєму комп’ютері і чому я хотів би мати їх node_modulesу share/npm/libпідкаталозі, а не прямо /usr/local/lib?

Відповіді:


117

/usr/local/lib/node_modules є правильним каталогом для глобально встановлених вузлових модулів.

/usr/local/share/npm/lib/node_modulesдля мене немає сенсу. Одне питання полягає в тому, що ви заплуталися, оскільки є два каталоги, які називаються node_modules :

/usr/local/lib/node_modules
/usr/local/lib/node_modules/npm/node_modules

Останній, здається, є вузловими модулями, які постачаються з Node, наприклад lodash, коли перший - це Node-модулі, які я встановив за допомогою npm.


1
У чому різниця між цими двома вузлами? Користувачам OS X рекомендується при встановленні використовувати той, що з вузла. Чи варто краще перейти до правильної установки npm?
Алісія

2
Встановлений npm2 з макпортів, ваші шляхи відсутні в цих місцях, а також відсутні в / opt / local / share ..
holms

71

Другий Томас Девід Кіхо , з наступним застереженням -

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

Отже ~/.nvm/versions/node/{version}/lib/node_modules/.


6
Саме те, що я шукав.
ap_snitch


6

Якщо ви хочете знати, де знаходяться ваші пакети NPM, вам слід:

which npm // locate a program file in the user's path SEE man which
// OUTPUT SAMPLE
/usr/local/bin/npm
la /usr/local/bin/npm // la: aliased to ls -lAh SEE which la THEN man ls
lrwxr-xr-x  1 t04435  admin    46B 18 Sep 10:37 /usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js

Отже, враховуючи, що npm - це сам пакет NODE, він встановлюється там же, де й інші пакети ( EUREKA ). Отже, для підтвердження слід cd в node_modules і вказати каталог.

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed

АБО

npm root -g

Відповідно до коментаря @anthonygore


5
Простіше: npm root -g
anthonygore

1
для мене, npm root -gі which npmне дав однакових результатів. Я хотів видалити, expo-cliі мені вдалося видалитиexpo та expo-cliкаталоги з /usr/local/bin/npm. Дякую @ T04435!
Олександр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.