安装模式
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 | 由于依赖文件系统,提升不完美 |