12

因此,我正在寻找有关管理手动安装的 node.js 包与使用自制软件的优缺点的一些信息。除了让 brew 为您管理所有内容的明显优势(而不是使用 nvm 来保持节点更新)之外,在使用 brew 和其他手动管理某些内容时是否有任何实际问题或潜在冲突需要注意?(或通过 npm、nvm 等?)

4

4 回答 4

9

我对 node.js(或 python 或 ruby​​ 等)等应用程序解释器的情况是:

  • 我有很多项目,有时几十个,几十个
  • 每个项目都与特定的解释器版本适度或紧密耦合
    • 例如,需要节点 v0.8.x 或 v0.10.24
  • 在系统范围内安装这些解释器鼓励跨项目耦合,因此我升级节点,因为 project8 已准备好升级而 project3 中断。

鉴于这些限制,我为每个项目安装我的解释器,因为稳定性和解耦对我来说比减少磁盘空间需求等其他因素更重要。

homebrew 非常适合与项目无关的工具,如ag,git等,以及相对稳定的其他东西,如 postgresql 或 mysql 或 mongodb。但是对于实际的语言运行时,耦合太紧了,所以我不使用自制软件。

安装 node 只是下载并解压一个 tar 档案,所以老实说你不需要花哨的工具。但是,我确实有一个名为wallah的项目可以帮助解决这个问题。你也可以看看nvmenvirius

于 2014-04-15T20:29:12.963 回答
7

要更新npm自身,您需要运行npm update npm -g. -g代表全球的地方。

知道如果您想更新系统上安装的全局软件包,您将运行npm update -g

-g如果您在运行时不附加,npm update它将尝试更新本地节点包(也就是您的当前目录$PWD)。要查看您是否在本地目录中安装了任何软件包可以运行npm list,如果没有安装将返回以下内容

/your/current/directory/
└── (empty)

如果您在该文件夹中确实有节点包,您会看到类似这样的内容。(注意:这是我跑时返回的npm list -g

/usr/local/lib
└─┬ npm@1.4.7
  ├── abbrev@1.0.4
  ├── ansi@0.2.1
  ├── ...

您可能还想运行brew update && brew upgrade && brew doctor以确保一切都是最新的。

我对初始问题的建议是使用brew它,因为从长远来看,它可以为您省去很多麻烦,因为它几乎可以管理您在计算机上安装的所有内容。看看这个https://github.com/nicolashery/mac-dev-setup看看他们是如何设置他们的开发计算机的。

请务必查看此https://github.com/phinze/homebrew-cask,以便您可以通过brew cask <app you want>.

使用brewnode 的最大原因是它同时安装了 nodejs 和 npm,它使用$(brew --prefix)路径但在/usr/local/. 您仍然可以使用与通过软件包安装进行安装时相同的所有命令。但是,您实际上可以通过简单地运行来卸载节点和 npm,brew uninstall node这是您安装它的其他方式无法做到的。

希望这可以帮助。

PS:如果您已经通过其他方法安装了节点,那么sudo chown $USER /usr/local/*就是您的朋友。所有这一切都是允许对所有文件夹和文件进行读/写访问,/usr/local/其中只需要修复 brew 的链接。

于 2014-04-23T20:52:16.860 回答
3

如果通过 Brew 安装,有些人报告说npm update无法自行运行(npm 无法更新 npm)。

我建议手动安装,因为 NPM 将管理 node.js 更新和包,而 Brew 将仅管理 node.js + npm 而不是模块。Brew 也经常落后于更新版本。

于 2014-04-15T19:46:38.490 回答
0

以下是 homebrew 相对于手动安装 node js 的一些优点或优点

  1. 通过安装程序安装节点时,您需要sudo正确安装或卸载软件包的权限。sudo允许安装程序将文件放置在文件系统中只有管理员可以访问的区域中。Homebrew 的一个好处是它不需要访问计算机的仅限管理员区域即可安装 NodeJS
  2. 通过安装程序安装 Node 后,您必须将节点可执行文件的路径添加到您的系统 $PATH.where 中,就像 homebrew 一样,它将负责该任务。

开箱即用的优势之一是它可以帮助 Web 开发人员使用 Mac 安装一些缺少的包。

于 2017-07-19T16:57:48.967 回答