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