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

chr*_*sen 59 node.js npm npm-install yarnpkg

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

Mik*_*ill 65

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


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

  • 纱线团队认为npm不安全且不可靠.从Yarn的"安装"页面上的"通过npm安装"部分:

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

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

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

  • 通过系统包管理器安装将Yarn与npm分离,允许您在没有npm的情况下运行Yarn
  • 系统包管理器通常定期运行,保持Yarn更新
  • 通过npm安装纱线很

优点npm install -g yarn:

  • 快速简便(npm install -g yarn)
  • 可以在任何npm环境中完成(与平台无关)
  • Node.js开发人员熟悉的范例和流程
  • 可以轻松更新(npm update -g yarn)
    • 一个Yarn更新命令存在(yarn self-update)但它似乎被打破了
  • 不依赖于系统包管理器
  • 可以为不同的项目或不同版本的Node.js使用不同版本的Yarn nvm

推荐安装的系统软件包管理器参数在引用Windows时会出现故障,而Windows中没有正式的软件包管理器(除非您计算Windows Update).此外,诸如Chocolatey之类的Windows程序包管理器通常不配置为自动更新.

我不确定我是否完全赞同Yarn团队对此的决定,但他们确实提出了一些公平的观点.纱线项目仍然很年轻,如果它要成为npm的替代品,那么鼓励npm作为其主要安装者是没有意义的.

无论如何,在大多数情况下,通过npm进行安装似乎现在运行得很好.


资料来源:

  • 观点:似乎真正的答案是因为yarn是npm的竞争对手。因此,他们需要一种不涉及npm的采用方式。我个人认为yarn更好,但是我说安装另一个软件包管理器(Homebrew)有点愚蠢,这比使用已安装的npm,跨平台工作并且可以在项目之间进行版本控制的npm更好。 (7认同)
  • 另一种观点:如果yarn确实更好(我同意),那么是否使用npm安装并不重要。我们都知道,您上次打开 IE 是为了下载 Chrome。 (2认同)

nik*_*ohn 19

安装Yarn没有明显的缺点npm.事实上,我自己选择了这种方法,原因有以下几点:

  1. 这显然是最简单的方法.npm i --global yarn你可以从字面上替换npmyarn控制台立即重新启动.
  2. 如果您nvm在每个NodeJS版本上使用和维护不同的代码项目,那么您可以在一个版本上安装Yarn而在另一个版本上不安装它
  3. 老实说,我认为平台特定安装中没有提到的唯一原因是npm是平台不可知的


Mar*_*cke 7

因为npm它不是特定于平台的,几乎可以在任何系统上运行,所以它被列为替代方案.平台特定安装没有优点或缺点.不同之处在于安装位置,但所有方法都将全局yarn命令暴露给CLI.

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