Skip to content
Latchkey

nvm vs fnm: troca mais rápida de versões do Node

O nvm é o gerenciador de versões do Node mais usado, escrito em shell; o fnm é uma alternativa rápida em Rust com inicialização de shell mais veloz.

O nvm gerencia versões do Node por meio de funções de shell e um arquivo .nvmrc e está instalado em quase todo lugar, mas seu sourcing de shell deixa a inicialização do terminal mais lenta. O fnm faz o mesmo trabalho em Rust, iniciando muito mais rápido, com suporte a .nvmrc e .node-version, e alternando versões no cd. Ambos fixam o Node por projeto; o fnm troca a onipresença do nvm por uma velocidade sensivelmente melhor.

nvmfnm
LinguagemShellRust
VelocidadeInicialização de shell lentaRápida
Config.nvmrc.nvmrc / .node-version
Troca automáticaPlugin / manualNo cd
Melhor paraMáxima onipresençaDevs preocupados com velocidade

No CI

O nvm funciona no CI, mas adiciona sobrecarga de sourcing de shell por job; o fnm instala e alterna o Node mais rápido a partir de um único binário. Ambos leem .nvmrc, então a migração é fácil. Na prática muitos pipelines usam setup-node, mas para jobs que precisam respeitar um .nvmrc do repositório, o fnm é a opção mais enxuta.

Acelere

Faça cache do diretório de instalação do Node e do cache do gerenciador de pacotes com a chave baseada em .nvmrc e no lockfile. Ambos rodam em runners de CI; runners gerenciados mais rápidos encurtam as etapas de instalação do Node e das dependências.

O veredito

Querer a ferramenta mais universalmente disponível com a maior comunidade: nvm. Querer inicialização rápida do shell e trocas ágeis de versão a partir de um único binário: fnm. O fnm lê .nvmrc, então experimentá-lo junto do nvm é de baixo risco.

Guias relacionados