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

Где должны быть установлены модули 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.забастовкa >

Два вопроса:

  • Каков правильный каталог для модулей node в 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?

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

npm root -g

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

Ответ 4

Если вы хотите узнать местоположение ваших пакетов NPM, вам следует:

which npm // locate a program file in the user 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

ИЛИ ЖЕ

npm root -g

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