我的npm模块应该在Mac OS X上安装在哪里?

Ben*_*old 70 macos node.js npm

我试图升级phonegap通过npm当我开始运行陷入困境.长话短说,node_modules我的电脑上有两个目录.

/usr/local/lib/node_modules
/usr/local/share/npm/lib/node_modules
Run Code Online (Sandbox Code Playgroud)

当我运行时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会影响配置?有很多选择.


编辑:我发现我的符号链接正在创建/usr/local/bin,但我的.bash_profile设置/usr/local/share/npm/bin/usr/local/bin在我的$PATH.我依稀记得在某些时候将这条路径添加到我的个人资料中,但我不确定为什么.

所以问题现在变成了:我如何node_modules在我的计算机上找到两个不同的目录,为什么我要将我node_modulesshare/npm/lib子目录放在子目录中/usr/local/lib

Tho*_*hoe 100

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

  • 从Macports安装npm2时,这些位置不存在您的路径,/ opt / local / share中也不存在。 (2认同)

gin*_*nna 51

第二个Thomas David Kehoe,有以下警告 -

如果使用节点版本管理器(nvm),则全局节点模块将存储在保存模块时使用的任何节点版本下.

所以~/.nvm/versions/node/{version}/lib/node_modules/.

  • 正是我在寻找什么. (6认同)

小智 24

npm root -g
Run Code Online (Sandbox Code Playgroud)

检查npm_modules的全局位置


Luk*_*kas 17

查找当前活动安装的当前路径npm

npm root -g

或者尝试以下流行的默认设置之一:

Linux:

/usr/local/lib/node_modules

MacOS(通过brew安装):

/opt/homebrew/lib/node_modules

Linux(可能还有 macOS)与 nvm 一起安装时:

~/.nvm/versions/node/{version}/lib/node_modules/

窗户(奖金)

C:\Program Files\nodejs\node_modules\


T04*_*435 10

如果你想知道你的 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
Run Code Online (Sandbox Code Playgroud)

因此,鉴于 npm 本身就是一个节点包,它与其他包(EUREKA)安装在同一位置。所以要确认你应该 cd 进入 node_modules 并列出目录。

cd /usr/local/lib/node_modules/
ls
#SAMPLE OUTPUT
@angular npm .... all global npm packages installed
Run Code Online (Sandbox Code Playgroud)

或者

npm root -g
Run Code Online (Sandbox Code Playgroud)

根据@anthonygore 的评论

  • 更简单: npm root -g (8认同)