我的 npm 模块应该安装在 Mac OS X 的啥位置?
Posted
技术标签:
【中文标题】我的 npm 模块应该安装在 Mac OS X 的啥位置?【英文标题】:Where should my npm modules be installed on Mac OS X?我的 npm 模块应该安装在 Mac OS X 的什么位置? 【发布时间】:2014-09-22 15:12:12 【问题描述】:当我开始遇到麻烦时,我正试图通过npm
升级phonegap
。长话短说,我的电脑上有两个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
的安装方法会影响配置吗?有一个lot of options。
编辑:我发现在我的/usr/local/bin
中创建了符号链接,但我的.bash_profile
在我的$PATH
中设置为/usr/local/share/npm/bin
在/usr/local/bin
之前。我隐约记得在某个时候将该路径添加到我的个人资料中,但我不确定为什么。
所以现在的问题变成了:我是如何在我的计算机上得到两个不同的node_modules
目录的?为什么我要将我的node_modules
放在share/npm/lib
子目录中而不是在/usr/local/lib
中?
【问题讨论】:
使用npm root -g
查找全局包根路径
【参考方案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
,而前者是我使用 npm
安装的 Node 模块。
【讨论】:
这两个节点有什么区别?对于 OS X 用户,建议在安装时使用来自节点的那个。迁移到正确安装 npm 会更好吗? 从 macports 安装 npm2,你的路径在这些位置不存在,在 /opt/local/share 中也不存在..【参考方案2】:第二个Thomas David Kehoe,有以下警告--
如果您使用的是节点版本管理器 (nvm),您的全局节点模块将存储在您保存模块时使用的任何节点版本下。
所以~/.nvm/versions/node/version/lib/node_modules/
。
【讨论】:
正是我想要的。【参考方案3】:npm root -g
检查 npm_modules 全局位置
【讨论】:
找到node_modules的全局路径的最好最简单的方法。【参考方案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 的评论
【讨论】:
更简单:npm root -g 对我来说,npm root -g
和 which npm
没有给出相同的结果。我想卸载expo-cli
,我成功地从/usr/local/bin/npm
中删除了expo
和expo-cli
目录。谢谢@T04435!【参考方案5】:
查找当前活动npm
安装的当前路径:
npm root -g
或尝试以下流行的默认设置之一:
Linux:
/usr/local/lib/node_modules
MacOS(通过 brew 安装):
/opt/homebrew/lib/node_modules
使用 nvm 安装的 Linux(可能还有 macos):
~/.nvm/versions/node/version/lib/node_modules/
Windows(奖励?)
C:\Program Files\nodejs\node_modules\
【讨论】:
【参考方案6】:使用这个命令:
npm -t
-> 找到你的全局 npm 包的路径。
如果您使用的是 nvm(节点版本管理器包)。那么你的路径可能
看起来像这样/Users/yourName/.nvm/versions/node/v14.15.3/lib/node_modules/npm
【讨论】:
以上是关于我的 npm 模块应该安装在 Mac OS X 的啥位置?的主要内容,如果未能解决你的问题,请参考以下文章
markdown 如果你已经在Mac OS X或Linuxbrew上通过Homebrew安装了Node,那么如何修复npm的说明
cabal 在 Mac OS X 上安装加速 cuda 错误 [重复]