Instalação e Gerenciamento de Versões
Versões consistentes do Node entre laptops, CI e produção evitam falhas do tipo "funciona na minha máquina" - fixe o Active LTS e o aplique no momento da instalação.
Busque em todas as páginas da documentação
Versões consistentes do Node entre laptops, CI e produção evitam falhas do tipo "funciona na minha máquina" - fixe o Active LTS e o aplique no momento da instalação.
Cartão de receita de referência rápida - pronto para copiar e colar.
// package.json
{
"engines": {
"node": ">=24.18.0 <25",
"npm": ">=10.0.0"
},
"engineStrict": true
}# .nvmrc
24.18.0Quando usar isso:
# Instalar fnm (macOS/Linux) - gerenciador de versões rápido e cross-shell
curl -fsSL https://fnm.vercel.app/install | bash
fnm install 24.18.0
fnm use 24.18.0
node --version # v24.18.0// Trecho do package.json
{
"name": "billing-api",
"type": "module",
"engines": { "node": ">=24.18.0 <25" },
"scripts": {
"preinstall": "node scripts/check-node-version.mjs"
}
}// scripts/check-node-version.mjs
const required = 24;
const major = Number(process.versions.node.split('.')[0]);
if (major !== required) {
console.error(`Node ${required}.x é necessário, mas obteve ${process.version}`);
process.exit(1);
}O que isso demonstra:
.nvmrc / .node-version integram-se com fnm, nvm e asdfengines documenta o intervalo suportado para humanos e ferramentaspreinstall falha rapidamente antes que npm install baixe pacotes<25 exclui lançamentos Atuais (de número ímpar) inadequados para produçãoengines é consultivo, a menos que engine-strict=true em .npmrc ou você adicione scripts de aplicação.node:24.18.0-bookworm-slim - não node:latest.volta do package.json e troca automaticamente ao usar cd.| Ferramenta | Velocidade | Modelo de fixação | Melhor para |
|---|---|---|---|
| fnm | Rápido (Rust) | .nvmrc, hook de shell | Desenvolvimento diário em macOS/Linux |
| nvm | Moderada | .nvmrc, amplamente conhecido | Documentação e tutoriais legados |
| Volta | Rápido | Bloco volta do package.json | Equipes que desejam use manual zero |
| asdf | Baseado em plugin | .tool-versions | Repositórios políglotos (Node + Ruby + Go) |
// Lê a versão do runtime na inicialização e a expõe em /health
export function runtimeInfo(): { node: string; platform: string } {
return {
node: process.version,
platform: `${process.platform}-${process.arch}`,
};
}node:latest no Docker - cada build pode obter uma versão principal diferente. Correção: fixe node:24.18.0-bookworm-slim com um digest.engines sem aplicação - npm avisa, mas instala mesmo assim por padrão. Correção: engine-strict=true em .npmrc ou um portão de CI.npx, pnpm dlx ou devDependencies locais do projeto.| Alternativa | Usar Quando | Não Usar Quando |
|---|---|---|
| Volta | Troca automática por projeto | Você precisa de suporte ao Windows com atrito mínimo de configuração |
| asdf | Uma ferramenta para várias linguagens | Equipes focadas apenas em Node que desejam o caminho mais simples |
| Somente Container (sem gerenciador local) | Workflows Devcontainers / Somente Docker | Iteração local rápida sem sobrecarga de container |
Gerenciador de pacotes do sistema (apt, brew) | Instalações rápidas únicas | Paridade de produção ou troca de múltiplas versões |
Node.js 24.18.0 (Active LTS) para novas implantações. Node 22.23.1 (Maintenance LTS) é aceitável durante a migração, mas planeje atualizar antes que a manutenção termine.
Ambos trocam versões do Node via hooks de shell. fnm é mais rápido (escrito em Rust) e suporta o mesmo formato de arquivo .nvmrc.
Sim. Commite .nvmrc ou .node-version para que cada desenvolvedor e job de CI resolva a mesma versão.
Adicione uma seção volta ao package.json:
"volta": { "node": "24.18.0", "npm": "10.9.0" }Volta troca automaticamente quando você entra no diretório do projeto.
Quando engine-strict=true em .npmrc, npm se recusa a instalar se o Node/npm em execução não satisfizer engines.
Sim. corepack enable ativa a versão do gerenciador de pacotes declarada no campo packageManager:
"packageManager": "pnpm@9.15.0"Combine a CI com .nvmrc:
- uses: actions/setup-node@v4
with:
node-version-file: '.nvmrc'fnm, nvm-windows e Volta suportam Windows. Documente uma ferramenta canônica no README da equipe.
Não para produção. Lançamentos ímpares são "Current" e de curta duração. Use Active LTS (números pares) para serviços.
npm list -g --depth=0Prefira devDependencies locais do projeto em vez de globais para reprodutibilidade.
Alpine usa musl libc - alguns add-ons nativos precisam de etapas de compilação extras. bookworm-slim (Debian) é mais seguro para módulos nativos.
Atualize primeiro as máquinas de desenvolvimento e a CI, execute a suíte de testes, verifique os avisos de API depreciados com NODE_OPTIONS=--pending-deprecation, depois faça o rollout para produção.
Versões da Stack: Esta página foi escrita para Node.js 24.18.0 (Active LTS), npm 10+, TypeScript 5.6+, Express 5, Fastify 5 e NestJS 11.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026