Yarn Berry vs pnpm: gerenciadores de pacotes JS modernos
Escolha o pnpm para um node_modules rápido e eficiente em disco, via um store endereçável por conteúdo com isolamento estrito de dependências; escolha o Yarn Berry se quiser Plug n Play, zero-installs e seu sistema de plugins e constraints.
Yarn Berry (Yarn 2 e posteriores) e pnpm são alternativas rápidas e modernas ao npm, com forte suporte a monorepo. Eles diferem mais na forma como posicionam dependências em disco. O pnpm usa um store global endereçável por conteúdo e symlinks, gerando um node_modules estrito e não plano. O Yarn Berry usa por padrão o Plug n Play (PnP), que pode dispensar totalmente o node_modules.
| Yarn Berry | pnpm | |
|---|---|---|
| Modelo de instalação | PnP (padrão) ou linker node-modules | Symlinks a partir de um store global |
| Uso de disco | Baixo (cache de zero-installs) | Baixo (store com hard links) |
| Rigidez | Estrito sob PnP | Estrito (sem deps fantasmas) |
| Workspaces | Sim (maduro) | Sim (maduro) |
| Compatibilidade | PnP pode exigir patches para algumas ferramentas | Alta (layout real de node_modules) |
| Extras | Plugins, constraints, zero-installs | pnpm-lock.yaml, catalogs |
Onde cada um realmente se destaca
O pnpm vence em ampla compatibilidade porque seu node_modules com symlinks parece um layout normal para a maioria das ferramentas, ainda impedindo o acesso a dependências não declaradas (fantasmas). O Yarn Berry vence se você quer os zero-installs do PnP (commitando o cache para que yarn install seja quase instantâneo no CI) mais seu ecossistema de constraints e plugins.
No CI
Ambos fazem bom cache. O pnpm restaura rápido a partir do seu store e pnpm install --frozen-lockfile impõe o lock. O Yarn Berry com zero-installs pode tornar as instalações no CI quase gratuitas porque o cache é commitado, embora isso faça o repositório crescer. Ambos suportam --immutable/--frozen-lockfile para falhar em caso de drift do lockfile, o que você quer no CI.
Ressalvas honestas
O PnP melhora a correção, mas algumas ferramentas presumem um node_modules físico e precisam do linker node-modules ou de patches, o que gera atrito. O pnpm costuma ser a escolha de menos surpresas para toolchains mistas, mas sua rigidez pode revelar bugs reais (deps não declaradas) que uma árvore npm plana escondia.
O veredito
Escolha o pnpm para o caminho mais suave até instalações rápidas e estritas que simplesmente funcionam com as ferramentas existentes. Escolha o Yarn Berry se quiser especificamente os zero-installs do PnP ou seus recursos de plugins e constraints, aceitando eventual trabalho de compatibilidade.