Skip to content
Latchkey

fnm vs nvm: gerenciadores de versão do Node para CI

O fnm é um gerenciador de versões do Node rápido e baseado em Rust; o nvm é o original baseado em shell que quase todos já usaram.

Ambos instalam e alternam versões do Node.js e leem um arquivo de versão do projeto. O fnm é um binário compilado que inicia rápido e lê .node-version ou .nvmrc; o nvm é um script Bash universal, mas lento de carregar em um shell.

fnmnvm
ImplementaçãoBinário RustScript Bash
Sobrecarga na inicialização do shellBaixaPerceptível (carrega o script)
Arquivo de versão.node-version / .nvmrc.nvmrc
Troca automática ao cdSim (com hook de shell)Via configuração extra
OnipresençaCrescendoMuito amplamente documentado

Onde o fnm ganha

Como um binário único, o fnm instala de forma limpa em CI e adiciona pouca sobrecarga na inicialização do shell, o que importa quando muitos steps geram shells. Ele lê tanto .node-version quanto .nvmrc, então se encaixa em repositórios existentes. A troca automática na mudança de diretório é suave com o hook de shell.

Onde o nvm ganha

O nvm é a opção mais documentada e é o que a maioria dos guias e onboardings pressupõe. Para máquinas de desenvolvimento locais onde a velocidade de inicialização não é crítica, sua onipresença e familiaridade são vantagens reais. Muitos times já têm memória muscular de nvm.

Em CI

No GitHub Actions, o caminho mais simples geralmente é actions/setup-node lendo o .nvmrc, sem gerenciador de versão. Recorra ao fnm ou nvm quando precisar de troca na hora, no meio de um job; o fnm é a escolha mais enxuta para a velocidade do pipeline.

O veredito

Escolha o fnm por velocidade e uma instalação limpa de binário único, especialmente em CI ou para shells rápidos; escolha o nvm por máxima familiaridade em máquinas locais. Para a maioria dos pipelines, o setup-node com um arquivo de versão evita a necessidade de qualquer um.

Guias relacionados