1️⃣ Pré-requisitos
Windows 10 ou 11
Acesso de usuário padrão (não é necessário ser administrador)
Bash disponível (Git Bash ou WSL)
PowerShell (padrão ou PowerShell Core)
Desinstalar Node e NVM for Windows (evita conflitos)
2️⃣ Download e Instalação do NVM
Baixe a versão zip “no-install” do NVM para Windows:
https://github.com/coreybutler/nvm-windows/releases
→ escolha nvm-noinstall.zip.
Extraia o conteúdo em:
C:\Users\marcelo.vilasboas\nvm -> lembre-se de substituir marcelo.vilasboas pelo seu usuário, em todos os pontos 😜
O conteúdo deve incluir uma séria de arquivos, dentre eles:
- nvm.exe
- elevate.cmd
- elevate.vbs
Crie o arquivo settings.txt neste mesmo diretório com as informações abaixo:
root: C:\Users\marcelo.vilasboas\nvm
path: C:\Users\marcelo.vilasboas\nvm\nodejs
arch: 64
proxy: none
PRO TIP: Caso seu usuário contenha espaços ou caracteres especiais, identifique o nome correspondente em DOS. O meu por exemplo seria: MARCEL~1.VIL (no meu caso não precisei, utilizei como nos exemplos aqui).
Para isto, basta digitar cmd no Powershell e executar: for %I in (.) do echo %~sI, retornará seu usuário, após, digite exit e voltará para o Powershell.
3️⃣ Configuração de variáveis de ambiente de usuário (via Powershell)
Limpe as variáveis de ambiente de usuário existentes (por garantia):
[Environment]::SetEnvironmentVariable("NVM_HOME",$null,"User")
[Environment]::SetEnvironmentVariable("NVM_SYMLINK",$null,"User")
Crie as variáveis de ambiente de usuário:
[Environment]::SetEnvironmentVariable("NVM_HOME","C:\Users\marcelo.vilasboas\nvm","User")
[Environment]::SetEnvironmentVariable("NVM_SYMLINK","C:\Users\marcelo.vilasboas\nvm\nodejs","User")
Atualize o PATH do usuário para incluir as novas variáveis:
$oldPath = [Environment]::GetEnvironmentVariable("Path","User")
$newPath = "$oldPath;C:\Users\marcelo.vilasboas\nvm;C:\Users\marcelo.vilasboas\nvm\nodejs"
[Environment]::SetEnvironmentVariable("Path",$newPath,"User")
Feche e abra o terminal para aplicar.
Digite os comandos para verificar se foi aplicado corretamente:
echo $env:NVM_HOME
echo $env:NVM_SYMLINK
Deve retornar:
C:\Users\marcelo.vilasboas\nvm
C:\Users\marcelo.vilasboas\nvm\nodejs
Verifique também se o PATH foi corretamente atualizado com estas novas variáveis:
$env:PATH -split ';'
LEMBRANDO: Se tiver NVM for Windows ou Node instalado, pode dar conflitos, desinstale.
Testando instalação do NVM:
nvm -v
Resultado esperado:
4️⃣ Estrutura de pastas do NVM
Pasta base: C:\Users\marcelo.vilasboas\nvm
Cada versão do Node: C:\Users\marcelo.vilasboas\nvm\v[versão]
Link simbólico para uso atual: C:\Users\marcelo.vilasboas\nvm\nodejs
5️⃣ Instalando uma versão do Node via NVM
Baixe a versão desejada:
nvm install 14.21.3
nvm install 25.6.1
nvm install latest
Se houver erro de download de versões mais antigas do Node ou NPM, baixe manualmente o .ZIP do Node diretamente do site [https://nodejs.org/en/about/previous-releases] e extraia para C:\Users\marcelo.vilasboas\nvm\v[versão_node].
Após, basta usar o comando abaixo para utilizar a versão desejada:
nvm use 25.6.1
OBS: No meu caso, o comando nvm use não funcionou, ele exclui a pasta nodejs mas não conseguiu criar um link/junction novo para versão que desejava, pedia privilégios de administrador. Por isto criei os scripts abaixo.
6️⃣ Script PowerShell para trocar versão do Node e instalar Yarn
Criei um script para rodar em Powershell para instalar a versão desejada do NodeJS e já instalar o Yarn também.
Verifique se já possui um profile com o comando $PROFILE, deve aparecer algo como:
Se tiver, edite. Caso não exista, crie conforme a seguir:
Cria estrutura de pasta:
New-Item -ItemType Directory -Force -Path (Split-Path $PROFILE)
Cria o arquivo:
New-Item -ItemType File -Force -Path $PROFILE
Para editar o arquivo:
notepad $PROFILE
Adicione o script abaixo e salve:
function use-node($version) {
$root = "$HOME\nvm"
$link = "$root\nodejs"
$target = "$root\v$version"
if (!(Test-Path $target)) {
Write-Host "Versão $version não encontrada."
return
}
if (Test-Path $link) {
Remove-Item $link -Force
}
New-Item -ItemType Junction -Path $link -Target $target | Out-Null
Write-Host "Node $version ativado."
# Verifica se yarn existe
$yarn = Get-Command yarn -ErrorAction SilentlyContinue
if (-not $yarn) {
Write-Host "Instalando Yarn globalmente..."
npm install -g yarn
} else {
Write-Host "Yarn ja esta instalado."
}
node -v
yarn -v
}
Execute o comando abaixo para ativar imediatamente sem reiniciar o Powershell:
. $PROFILE
Como usar o script:
use-node 14.21.3
use-node 25.6.1
7️⃣ Script Bash para Git Bash ou WSL
Também criei para rodar em Bash, para isto adicione o script no ~/.bashrc ou ~/.zshrc.
Para acessar, digite:
nano ~/.bashrc ou nano ~/.zshrc e adicione o script abaixo:
use-node() {
ROOT="$HOME/nvm"
LINK="$ROOT/nodejs"
TARGET="$ROOT/v$1"
if [ ! -d "$TARGET" ]; then
echo "Versão $1 não encontrada."
return 1
fi
if [ -L "$LINK" ] || [ -d "$LINK" ]; then
rm -rf "$LINK"
fi
ln -s "$TARGET" "$LINK"
export PATH="$LINK:$PATH"
echo "Node $1 ativado."
if ! command -v yarn &> /dev/null; then
echo "Yarn não encontrado. Instalando Yarn globalmente..."
npm install -g yarn
else
echo "Yarn já está instalado."
fi
node -v
yarn -v
}
Salve e para aplicar alterações imediatamente no terminal, execute:
source ~/.bashrc
Uso:
use-node 14.21.3
use-node 25.6.1
8️⃣ Gerenciamento de CLIs globais
Cada versão do Node tem ambiente isolado, por isto:
Yarn, TypeScript, ESLint, PNPM etc. precisam ser instalados por versão
Script use-node instala Yarn automaticamente
Você pode adicionar outras CLIs no mesmo bloco do script se desejar.
9️⃣ Manutenção no VS Code
Sempre abra um terminal novo e rode use-node
No PowerShell do VS Code, o profile $PROFILE deve conter a função, que pode ser diferente do Powershell do Windows.
No Bash do VS Code, o ~/.bashrc ou ~/.zshrc deve conter a função.
Isso garante que Node/Yarn estejam visíveis e atualizados no terminal
EXTRA TIPS
O foco foi fazer funcionar a troca de versão do node sem privilégios, mas:
- Você pode criar script para terminal cmd, caso use;
- Você pode configurar versão do Yarn no próprio projeto, sem precisar deixar no script;
- Você pode adicionar mais comandos nos scripts;
CRÉDITOS:
Este artigo foi baseado no artigo do Cezar Augusto Mezzalira: https://dev.to/cezarmezzalira/instalando-o-nvm-sem-privilegios-administrativos-no-windows-1011-23k7
SE ESTE ARTIGO FOI ÚTIL:
Comente, curta, salve e compartilhe... 👍

Top comments (0)