我的 npm 模块应该安装在 Mac OS X 的哪个位置?

我试图通过 npm升级 phonegap时,我开始遇到麻烦。长话短说,我的电脑上有两个 node_modules目录。

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

When I run npm upgrade -g phonegap, it appears that npm updates the copy of the package that resides in /usr/local/lib/node_modules. However, if I which phonegap I find that the symlink points to the older installation at /usr/local/share/npm/lib/node_modules.

另外,当我尝试安装独立软件包(如 express)时,这些文件被安装在 /usr/local/lib/node_modules目录 但是在我的 $PATH中的任何地方都没有创建到可执行文件的符号链接。

两个问题:

  • Mac OS X 上的节点模块的正确目录是哪个?
  • $PATH安装软件时,如何配置 npm以链接 $PATH中的可执行文件?

附加提示: 安装 node的方法会影响配置吗。


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

所以现在的问题是: 我的计算机上为什么会有两个不同的 node_modules目录? 为什么我要把 node_modules放在 share/npm/lib的子目录中,而不是放在 /usr/local/lib的右边?

193283 次浏览

/usr/local/lib/node_modules是全局安装的节点模块的正确目录。

/usr/local/share/npm/lib/node_modules对我来说毫无意义。这里的一个问题是你感到困惑,因为有两个目录称为 Node _ module:

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

后者似乎是 Node 附带的节点模块,例如 lodash,而前者是我使用 npm安装的 Node 模块。

第二个 Thomas David Kehoe,附带以下警告——

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

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

如果你想知道你的 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 包,那么它与其他包(尤里卡)安装在同一位置。因此,为了确认您应该将 cd 放入 node _ module 并列出目录。

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

或者

npm root -g

根据@anthonygore 的评论

npm root -g

检查 npm _ module 全局位置

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

npm root -g

OR try one of these popular defaults:

Linux:

/usr/local/lib/node_modules

MacOS (installed through brew):

/opt/homebrew/lib/node_modules

安装 nvm 时,Linux (可能也是 macos) :

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

Windows (bonus 🎉)

C:\Program Files\nodejs\node_modules\

使用以下命令: npm -t-> 查找到全局 npm 包的路径。

如果您正在使用 nvm (节点版本管理器包) ,那么您的路径可能 看起来像这样的 /Users/yourName/.nvm/versions/node/v14.15.3/lib/node_modules/npm