Yarn vs pnpm para CI: qual gerenciador de pacotes é mais rápido?
Ambos batem o npm puro em velocidade, mas o Yarn (especialmente o Berry com PnP) e o pnpm seguem caminhos diferentes para um install rápido e reprodutível.
O Yarn é um gerenciador de pacotes maduro; o Yarn Berry (v2+) adiciona Plug'n'Play para pular o node_modules por completo. O pnpm usa um store endereçado por conteúdo com hard links e um layout estrito e não plano.
| Yarn | pnpm | |
|---|---|---|
| Modelo de install | node_modules ou PnP (Berry) | Store de conteúdo linkado |
| Velocidade de install | Rápido | Rápido (frequentemente o mais rápido) |
| Lockfile | yarn.lock | pnpm-lock.yaml |
| Install no CI | yarn install --immutable | pnpm install --frozen-lockfile |
| Rigor | Mais frouxo (Classic) / estrito (PnP) | Estrito por padrão |
No CI
O pnpm é tipicamente o mais rápido, com a menor pegada de disco e resolução estrita de fábrica. O PnP do Yarn Berry também pode ser extremamente rápido e amigável ao cache, mas o PnP às vezes precisa de shims de compatibilidade de pacotes. O Yarn Classic é estável e amplamente usado, mas mais lento que ambas as opções modernas. Escolha a flag immutable/frozen no CI para reprodutibilidade.
Faça cache da coisa certa
Faça cache do store do pnpm ou do diretório cache/.yarn do Yarn chaveado no lockfile. Ambos rodam de forma idêntica nos runners de CI; delegar o install pesado a runners gerenciados mais rápidos encurta a parte mais lenta do job.
O veredito
Quer os installs mais rápidos e rigor com o mínimo de complicação: pnpm. Já está no Yarn e quer o modelo de cache zero-install do PnP: Yarn Berry. Faça commit do lockfile e use a flag immutable/frozen em qualquer um deles.