为什么我不使用npm来安装纱线?

在博客中发布纱线(一种替代的npm客户端),他们说:“最简单的方法就是运行npm install -g yarn ”。 但是如果你到他们的文档中的“安装纱线”页面 ,“npm安装纱线”没有在任何特定于平台的安装页面上列出,并且它仅作为“替代”页面上的三个选项中的第三个提供。 此外,当您npm install纱线时,会打印一个弃用警告,“build议您使用本机安装方法为您的环境安装纱线”。 所以我的问题是,如果npm install是最简单的安装方法,为什么不是在他们的文档推荐的方法? 使用npm安装纱线有缺点吗?

通过npm安装Yarn没有明显的缺点。 事实上,我自己select这个方法的原因有几个:

  1. 这显然是最简单的方法。 npm i --global yarn ,你可以从字面上用您的控制台上的yarn立即取代npm
  2. 如果您在每个NodeJS版本上使用nvm并维护不同的代码项目,那么您可以在一个版本上安装Yarn,而不在另一个版本上
  3. 说实话,我能想到的唯一的原因是它没有在平台具体安装中提到,npm是平台不可知的

据Yarn项目维护人员介绍,通过npm安装纱线违背了项目的目标 ,可能会导致问题,而且通常比平台特定的安装方法更糟。


推荐平台特定安装的优点:

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

    注意:通常不build议通过npm安装纱线。 使用npm安装Yarn是不确定的,程序包没有签名,并且唯一的完整性检查是基本的SHA1哈希,这在安装系统范围的应用程序时是安全风险。

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

  • 运行Yarn,这是一个单独的包pipe理工具,通过npm可能导致边缘情况问题(见问题2072 )

  • 通过系统软件包pipe理器进行安装,从npm中分离出Yarn,允许您在没有npm的情况下运行Yarn
  • 系统包pipe理器通常定期运行,保持Yarn更新
  • 通过npm安装纱线很慢

npm install -g yarn优点:

  • 快速简单( npm install -g yarn
  • 可以在任何npm环境下完成(与平台无关)
  • 熟悉Node.js开发人员的范例和过程
  • 可以很容易地更新( npm update -g yarn
    • 纱线更新命令存在( yarn self-update ),但似乎被破坏
  • 不依赖于系统包pipe理员
  • 可以通过nvm为不同的项目或不同版本的Node.js使用不同的Yarn版本

推荐安装的系统软件包pipe理器参数在涉及到没有官方软件包pipe理器(除非您计算Windows更新)的Windows时往往会崩溃。 此外,Windows包pipe理器(如Chocolatey)通常没有configuration为自动更新。

我不确定我是否完全同意纱线团队在这方面的决定,但他们确实提出了一些公正的观点。 纱线项目还很年轻,如果要成为npm的替代品,那么鼓励npm作为其主要安装者是没有意义的。

无论如何,在大多数情况下,通过npm安装似乎现在工作得很好。


资料来源:

  • npm与系统包pipe理器的解释
  • 附加说明
  • 对纱线的“app”和“npm包”目标进行简短的评论
  • 关于如何保持Windows Yarn最新的问题

因为npm不是平台特定的,几乎可以在任何系统上运行,所以它被列为Alternative。 平台特定的安装没有优势或劣势。 区别在于安装位置,但所有方法都将全局yarn命令公开到您的CLI。

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