为什么我不使用npm来安装纱线?
在博客中发布纱线(一种替代的npm客户端),他们说:“最简单的方法就是运行npm install -g yarn
”。 但是如果你到他们的文档中的“安装纱线”页面 ,“npm安装纱线”没有在任何特定于平台的安装页面上列出,并且它仅作为“替代”页面上的三个选项中的第三个提供。 此外,当您npm install
纱线时,会打印一个弃用警告,“build议您使用本机安装方法为您的环境安装纱线”。 所以我的问题是,如果npm install
是最简单的安装方法,为什么不是在他们的文档推荐的方法? 使用npm
安装纱线有缺点吗?
通过npm
安装Yarn没有明显的缺点。 事实上,我自己select这个方法的原因有几个:
- 这显然是最简单的方法。
npm i --global yarn
,你可以从字面上用您的控制台上的yarn
立即取代npm
。 - 如果您在每个NodeJS版本上使用
nvm
并维护不同的代码项目,那么您可以在一个版本上安装Yarn,而不在另一个版本上 - 说实话,我能想到的唯一的原因是它没有在平台具体安装中提到,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
。