asdf vs nvm: Qual gerenciador de versões para CI?
O nvm gerencia apenas versões do Node; o asdf gerencia muitas linguagens a partir de uma única ferramenta e um único arquivo .tool-versions.
O nvm é um gerenciador de versões do Node focado, guiado pelo .nvmrc. O asdf é um gerenciador de versões multilinguagem que lida com Node, Python, Ruby e mais via plugins, fixados em um único arquivo .tool-versions.
| asdf | nvm | |
|---|---|---|
| Linguagens gerenciadas | Muitas (plugins) | Apenas Node |
| Arquivo de pin | .tool-versions | .nvmrc |
| Melhor para | Repos poliglotas | Repos só de Node |
| Uso em CI | Instalar plugins por linguagem | Geralmente via setup-node |
| Peso do setup | Mais pesado (plugins) | Leve |
No CI
Para um repo só de Node, o nvm (ou o setup-node da GitHub lendo o .nvmrc) é a forma mais leve de fixar uma versão. Para repos poliglotas, o asdf fixa cada linguagem em um único arquivo .tool-versions, então uma única ferramenta garante versões consistentes de Node, Python e Ruby entre local e CI. O asdf adiciona setup por plugin, mas elimina a necessidade de vários gerenciadores de versão separados.
Fixe e faça cache
Commite o .tool-versions ou o .nvmrc para que o CI use a versão local exata, e faça cache dos toolchains instalados quando possível. A instalação do toolchain roda nos runners de CI; runners gerenciados mais rápidos encurtam o setup a frio quando várias linguagens precisam ser instaladas.
O veredito
Repo só de Node querendo setup mínimo: nvm (ou setup-node com .nvmrc). Repo poliglota querendo uma ferramenta para cada linguagem: asdf com um .tool-versions commitado. Fixe o arquivo de versão de qualquer forma para um CI reproduzível.