为什么我不使用npm安装yarn?


78

他们在博客文章中宣布yarn(npm的替代客户端),他们说:“最简单的入门方法是运行npm install -g yarn”。但是,如果您转到其文档中的“ install yarn”页面,则“ npm install yarn”未在任何特定于平台的安装页面上列出,并且仅作为“ Alternatives”页面上三个选项中的第三个提供。 。此外,当您进行npm install纱线编织时,它会显示弃用警告,“建议您针对您的环境使用本地安装方法来安装Yarn。” 所以我的问题是,如果npm install是最简单的安装方法,为什么在他们的文档中不是推荐的安装方法?使用安装纱线是否有缺点npm



1
@ halfpastfour.am当我访问该链接时,它会将我重定向到yarnpkg.com/en/docs/install#mac-stable,该列表未将npm列为安装方法
Chris Arnesen

1
Akright,请尝试此操作并向下滚动yarnpkg.com/en/docs/install#alternatives-stable
halfpastfour.am

@ halfpastfour.am如问题文本中所述,npm实际上是“替代”页面上三个选项中的第三个。
克里斯·阿内森

Answers:


78

根据Yarn项目维护者的说法,通过npm安装Yarn违反了项目目标,可能会引起问题,并且通常比特定于平台的安装方法更糟糕。


建议的特定于平台的安装的优点:

  • Yarn团队认为npm不安全且不可靠。在Yarn的“安装”页面上的通过npm安装”部分中:

    注意:通常不建议通过npm安装Yarn。使用npm安装Yarn是不确定的,程序包未签名,唯一执行的完整性检查是基本SHA1哈希,这在安装系统范围的应用程序时会带来安全风险。

    由于这些原因,强烈建议您通过最适合您的操作系统的安装方法来安装Yarn。

  • 通过npm运行Yarn是一个单独的程序包管理器实用程序,可能会导致边缘问题(请参阅问题2072

  • 通过系统软件包管理器进行安装可使Yarn与npm脱钩,从而使您无需npm即可运行Yarn
  • 系统软件包管理器通常定期运行,以使Yarn保持更新
  • 通过npm安装Yarn很

优点npm install -g yarn

  • 快速简便(npm install -g yarn
  • 可以在任何npm环境中执行(与平台无关)
  • Node.js开发人员的熟悉范例和过程
  • 可以轻松更新(npm update -g yarn
    • 存在纱线更新命令(yarn self-update),但似乎已损坏
  • 不依赖系统软件包管理器
  • 可以通过以下方式将不同版本的Yarn用于不同的项目或不同版本的Node.js: nvm

推荐的安装的系统软件包管理器参数在引用Windows时往往会崩溃,而Windows没有正式的软件包管理器(除非您将Windows Update计数在内)。另外,Windows软件包管理器(例如Chocolatey)通常没有配置为自动更新。

我不确定我是否完全同意Yarn团队对此的决定,但他们确实提出了一些合理的观点。Yarn项目仍处于起步阶段,如果要替换npm,那么鼓励npm作为其主要安装程序是没有意义的。

无论如何,通过npm进行的安装在大多数情况下现在似乎可以正常工作。


资料来源:


14
观点:似乎真正的答案是因为yarn是npm的竞争对手。因此,他们需要一种不涉及npm的采用方式。我个人认为yarn更好,但是我说安装另一个软件包管理器(Homebrew)有点愚蠢,这比使用已安装的npm,跨平台工作并且可以在项目之间进行版本控制的npm更好。
Ynot

另一种意见:最简单,更灵活的方法是通过curl -o- -L https://yarnpkg.com/install.sh | bash。他们的建议很有道理;为什么在愿意安装依赖管理器依赖其他某些软件?我认为这是主要原因。商业竞争是公平的,因为他们甚至建议将NPM作为其中一种方法。只是,因为他们编写了一种软件来补偿NPM及其开发过程在最近几年中所造成的混乱,所以很明显,他们强调了它的所有缺陷,并劝阻不要将其用作Yarn的起点。
卡马菲瑟(Jamafeather),

另一种意见:如果yarn确实更好(我同意),那么是否使用npm进行安装并不重要。我们都知道您上次打开IE的时间是下载Chrome。
小鹏-ZenUML.com

1
我认为用npm安装yarn时发生的缓存问题也可能以其他方式安装时发生,所以我发现它倾向于呈现这样的事情。
Jean Paul

以我最近的经验,npm install yarn无法可靠地为您提供可用的可执行文件。

24

通过安装Yarn没有明显的缺点npm。实际上,我出于以下原因自己选择了此方法:

  1. 显然,这是最简单的方法。npm i --global yarn并且您可以立即在控制台上将其替换npmyarn
  2. 如果nvm在每个NodeJS版本上使用和维护不同的代码项目,则可以在一个版本上安装Yarn,而在另一个版本上不安装
  3. 老实说,我能想到的唯一原因是在特定于平台的安装中未提及它,因为npm与平台无关

7

由于npm不是特定于平台的,并且可以在几乎所有系统上运行,因此被列为替代方案。与特定于平台的安装相比,没有优点或缺点。区别在于安装位置,但是所有方法都将全局yarn命令公开给您的CLI。

我认为他们将其列为“最简单的方法”,因为大多数人已经非常熟悉npm

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.