在宣布 yarn(另一种 npm 客户端)的博客文章中,他们说,“最简单的入门方法是运行npm install -g yarn
”。但是,如果您转到他们文档中的“安装纱线”页面,则“npm install yarn”不会列在任何特定于平台的安装页面上,它仅作为“替代方案”页面上三个选项中的第三个提供. 此外,当您npm install
使用 yarn 时,它会打印出弃用警告,“建议使用适合您环境的本机安装方法安装 Yarn。” 所以我的问题是,如果npm install
是最简单的安装方法,为什么他们的文档中没有推荐它?使用安装纱线有缺点npm
吗?
3 回答
编辑(2020 年 11 月 23 日):
感谢 @Kissaki 在评论中提供 Yarn 建议的更新。
从 Yarn 2.x 开始,Yarn 团队改变了他们的建议,现在建议通过 npm 安装该工具。此建议围绕锁定每个项目使用的 Yarn 版本的优势。这使项目能够适应不同版本的 Yarn 的变化。
从新的纱线“安装”页面:
在您的系统中使用单个包管理器一直是个问题。为了稳定,安装需要跨环境使用相同的包管理器版本运行,否则我们会在版本之间引入意外的破坏性更改的风险 - 毕竟,这就是首先引入锁定文件概念的原因!从某种意义上说,Yarn 是您的第一个项目依赖项,因此“锁定它”也应该是有意义的。
出于这个原因,Yarn 2 及更高版本旨在按项目进行管理。
这类似于基于每个项目锁定构建工具版本的其他方法。有关示例,请参阅Gradle Wrapper 。
独立 Yarn 安装的优势很快就消失了,尤其是随着 Yarn 团队方向的改变。现在建议通过 npm 安装,并且从 Yarn 2.x 开始,他们的网站上似乎不再提供独立安装的说明。
原答案:
根据 Yarn 项目维护人员的说法,通过 npm 安装 Yarn违背了项目的目标,可能会导致问题,并且通常比特定于平台的安装方法更糟糕。
推荐的特定平台安装的优点:
- Yarn 团队认为 npm 不安全且不可靠。从 Yarn 的“安装”页面上的“通过 npm 安装”部分:
注意:一般不推荐通过 npm 安装 Yarn。使用 npm 安装 Yarn 是不确定的,包没有签名,唯一执行的完整性检查是基本的 SHA1 哈希,这在安装系统范围的应用程序时是一个安全风险。
由于这些原因,强烈建议您通过最适合您的操作系统的安装方法来安装 Yarn。
- 通过 npm 运行 Yarn,它是一个单独的包管理器实用程序,可能会导致边缘问题(请参阅issue 2072)
- 通过系统包管理器安装将 Yarn 与 npm 分离,允许您在没有 npm 的情况下运行 Yarn
- 系统包管理器通常会定期运行,保持 Yarn 更新
- 通过 npm 安装 Yarn 很慢
优点npm install -g yarn
:
- 快速简单 (
npm install -g yarn
) - 可以在任何 npm 环境中完成(与平台无关)
- Node.js 开发人员熟悉的范式和流程
- 可以轻松更新 (
npm update -g yarn
)- 存在 Yarn 更新命令 (
yarn self-update
) 但它似乎已损坏
- 存在 Yarn 更新命令 (
- 不依赖系统包管理器
- 可以通过不同的项目或不同版本的 Node.js 使用不同版本的 Yarn
nvm
推荐安装的系统包管理器参数在提到没有官方包管理器的 Windows 时往往会崩溃(除非您计算 Windows 更新)。此外,Chocolatey 等 Windows 包管理器通常不会配置为自动更新。
我不确定我是否完全同意 Yarn 团队对此的决定,但他们确实提出了一些公平的观点。Yarn 项目还很年轻,如果它要成为 npm 的替代品,那么鼓励 npm 作为其主要安装程序是没有意义的。
无论如何,在大多数情况下,现在通过 npm 安装似乎都可以正常工作。
资料来源:
通过npm
. 其实我自己选择这个方法有几个原因:
- 这显然是最简单的方法。并且您可以立即在控制台上
npm i --global yarn
替换npm
为。yarn
- 如果您
nvm
在每个 NodeJS 版本上使用和维护不同的代码项目,那么您可以在一个版本上安装 Yarn 而在另一个版本上不安装它 - 老实说,我能想到在特定平台安装中没有提到它的唯一原因是 npm 与平台无关
因为npm
不是特定于平台的,并且几乎可以在任何系统上运行,所以它被列为备选方案。平台特定安装没有优势或劣势。不同之处在于安装位置,但所有方法都将全局yarn
命令暴露给 CLI。
我认为他们将其列为“最简单的方法”,因为大多数人已经非常熟悉npm
.