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

时间:2016-10-13 16:03:52

标签: node.js npm npm-install yarnpkg

the blog post announcing yarn (an alternative npm client)他们说,"最简单的入门方式是运行npm install -g yarn"。但如果你去the "install yarn" page in their docs," npm安装纱线"并未在任何特定于平台的安装页面上列出,并且它仅作为"替代品"中的三个选项中的第三个提供。页。此外,当您npm install纱线时,它会打印弃用警告,"建议使用您环境的本机安装方法安装Yarn。"所以我的问题是如果npm install是最简单的安装方法,为什么它们不是他们文档中推荐的方法?使用npm安装纱线是否有缺点?

3 个答案:

答案 0 :(得分:61)

根据Yarn项目维护人员的说法,通过npm goes against the goals of the project安装Yarn会导致问题,并且通常比平台特定的安装方法更糟糕。

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

  • Yarn团队认为npm不安全且不可靠。从"安装到npm" Yarn' "Installation" page的一节:

      

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

         

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

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

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

npm install -g yarn的优势:

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

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

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

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

来源:

答案 1 :(得分:16)

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

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

答案 2 :(得分:6)

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

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