跳至主要内容

安装模式

Yarn 支持三种不同的方式在磁盘上安装项目。本文档简要概述了所有这些方式,以及每种方式的优缺点。

信息

所有安装模式都完全稳定。Yarn 默认使用 PnP 安装,但 pnpm 和 node-modules 链接器也是一流的公民,用于生产环境。

nodeLinker: pnp

即插即用安装在其专门的文档中进行了更详细的描述,但现在你可以将它们视为为每个项目生成一个 Node.js 加载器文件,这使得你的工具可以直接从磁盘上的全局存储中访问包。无需文件副本,甚至无需符号链接/硬链接。

优点缺点
极快不太习惯
内容可寻址存储IDE 集成通常需要SDK
防止幽灵依赖项有时需要 packageExtensions
语义依赖项错误
完美的提升优化
提供 依赖项树 API
可以升级为 零安装
信息

自 2019 年以来,Yarn Plug'n'Play 一直是 Yarn 中的默认安装策略,并且随着我们与工具作者合作以优化边缘,兼容性故事在这些年中得到了显着改善。

nodeLinker: pnpm

在此模式下,会在 node_modules/.store 中生成一个扁平文件夹,其中包含项目中每个依赖项的一个文件夹。每个依赖项文件夹都填充有从系统上所有项目共用的中央存储(默认情况下为 $HOME/.yarn/berry/index)获取的硬链接。最后,指向扁平存储中相关文件夹的符号链接被放置到 node_modules 文件夹中。

优点缺点
比 PnP 慢,但仍然非常快符号链接并不总是受工具支持
内容可寻址存储硬链接可能导致奇怪的行为
防止某些幽灵依赖项通用依赖项错误
无需 IDE SDK有时需要 packageExtensions
信息

pnpm 模式是传统 node_modules 安装和更现代的 Yarn PnP 安装之间的有趣折衷;它不会大幅降低性能,并提供略好的兼容性故事,代价是失去一些有趣的功能。

nodeLinker: node-modules

此模式是安装 Node.js 项目的古老而真实的方法,由 Node.js 和几乎整个 JavaScript 生态系统本机支持。

虽然我们倾向于建议先尝试其他两种模式之一,但如果您遇到依赖项问题而现在没有时间解决,它仍然是一个可靠的选择。当然,您的项目可能会有些不稳定,因为您不会注意到幽灵依赖项是否潜入,但根据情况,这可能是一个合理的权衡。

优点缺点
与整个生态系统的完美兼容性平均速度
对硬链接的可选支持 (nmMode)不防止幽灵依赖项
无需 IDE SDK由于依赖文件系统,提升不完美