通过 Homebrew 安装 Angular CLI(或任何节点包)与 NPM 全局安装之间的区别

Difference between Installing Angular CLI (or any node package) via Homebrew vs. NPM global install

在处理 MacOS 和 Angular 时,我知道您可以使用 Homebrew 安装 node/npm,并且我知道您可以使用 npm install -g @angular/cli 全局安装 Angular在您的节点环境中。

设置一台新机器 我最近发现有一个 angular-cli homebrew formula。我对 Homebrew 的总体架构及其工作原理不是很熟悉,而且我没能找到任何关于以某种方式安装它的好处的讨论。

我通常会尝试订阅“任何你可以通过主包管理器安装的东西”,但我对这里的方法很好奇,因为我不确定它作为 brew 公式的价值。

实际差异是什么?如果有的话? Disadvantages/advantages 一个在另一个之上?

好奇心点数:

我知道有很多关于如何安装 Angular CLI 的资料,但是我找不到任何关于这个 discussion/comparison.

的东西

我在 angular 方面的经验有些有限,但我会尽力回答这个问题。

假设您正在全局安装 angular-cli npm 包,没有太多差异:

自制软件:

  • 如果你只是 it to ,自制软件有时会更容易。
  • “一个工具来统治它们”- 更新系统 CLT 的统一方法。具有讽刺意味的是,它甚至为您设置了 npm。

NPM:

  • 能够在发布后立即接收最新更新。
  • 如果你没有通过 Homebrew 安装 node,这种方法可以减少重复。这是因为 Homebrew 将安装它自己的 node/npm 版本来安装 angular-cli。
    • 根据您的路径配置方式,这可能会让您对使用的 npm 感到意外。

所有 Homebrew 在幕后所做的是 运行 npm install 并将二进制符号链接到您的前缀(通常 /usr/local/bin 在英特尔机器上)。

来自Homebrew formula:

system "npm", "install", *Language::Node.std_npm_install_args(libexec)
bin.install_symlink Dir["#{libexec}/bin/*"]

Updating - updating angular CLI now coupled to whether or not there is an updated formula for the update not just a new node package available?

没错。使用 brew 安装意味着你必须等待 Homebrew 公式更新后才能更新。使用 npm 安装会在发布后立即为您提供更新版本。

但是根据个人经验,自制公式可能会很快更新。

Install location - I know on other machines I have had to point pycharm to specific globally installed packages, where would it be referenced from?

angular-cli 的路径将为 $(brew --prefix)/bin/ng,其中默认前缀为:

  • /usr/local 英特尔
  • /opt/homebrew Apple Silicon

Other globally installed packages - If there is not a homebrew formula for some other package that should be globally installed, is it still installed in the same location as the ones managed with Homebrew or is it treated differently?

我不太明白,但我会尽量回答我认为你的问题是:

If I install an npm package globally, is it installed in a different location to the homebrew angular-cli?

是的。所有 Homebrew 文件都将安装到 $(brew --prefix)/Cellar,因此 angular-cli 将安装到。 $(brew --prefix)/Cellar/angular-cli/ 二进制文件将符号链接到 $(brew --prefix)/bin

您的 npm 包可能会安装到 $(brew --prefix)/lib/node_modules,或者可能 ~/.nvm/,具体取决于您的操作方式。

这有什么不同吗?假设这些全局包都是 CLT,那么不会,因为它们无论如何都应该在您的 PATH 中。

如有任何问题,请随时提出,我很乐意提供帮助:)

(OP here)接受的答案涵盖了我对差异的好奇心的主要问题,但我想包括@jabaa 评论中的另一种方法(与我的问题有点相切),因为该方法有效对我来说很好。 @jabaa 的建议本质上是“两者都不是”——只需在每个 Angular 项目本地安装东西,并在 ng 命令前加上 npx.