it-roy-ru.com

Где мои модули npm должны быть установлены в Mac OS X?

Я пытался обновить 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

46
Ben Harold

/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.

76
Thomas David Kehoe

Второй Томас Дэвид Кехо , со следующей оговоркой -

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

Итак, ~/.nvm/versions/node/{version}/lib/node_modules/.

37
ginna
npm root -g

проверить глобальное расположение npm_modules

3
lazyTank

Если вы хотите узнать местоположение ваших пакетов 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). Поэтому для подтверждения вам нужно перейти в node_modules и перечислить каталог.

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

OR

npm -root -g

Согласно комментарию @anthonygore

0
T04435