我的npm模块应在Mac OS X上的什么位置安装?


82

当我开始遇到麻烦时,我试图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会影响配置?有很多选择


编辑:我想通了,在我创建符号链接/usr/local/bin,但我.bash_profile是用设置/usr/local/share/npm/bin提前/usr/local/bin的我$PATH。我隐约记得在某个时候将该路径添加到我的个人资料中,但是我不确定为什么。

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

Answers:


114

/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


1
这两个节点之间有什么区别?对于OS X,建议用户在安装时使用from节点。正确安装npm会更好吗?
艾丽西亚(Alicia)

2
从macports安装了npm2,您的路径在那些位置不存在,在/ opt / local / share中
也不存在。.– holms



4

如果您想知道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)安装在同一位置。因此,请确认您应该CD进入node_modules并列出目录。

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

要么

npm root -g

根据@anthonygore的评论


4
更容易:npm root -g
anthonygore

1
对我来说,npm root -gwhich npm没有给出相同的结果。我想卸载,expo-cli并成功从中删除expoexpo-cli目录/usr/local/bin/npm。谢谢@ T04435!
Aleksandar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.