<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcelo Vilas Boas</title>
    <description>The latest articles on DEV Community by Marcelo Vilas Boas (@mvilasboas).</description>
    <link>https://dev.to/mvilasboas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3781261%2F1f9f5c4f-db4a-42a1-a2f4-d3110ab91c10.jpeg</url>
      <title>DEV Community: Marcelo Vilas Boas</title>
      <link>https://dev.to/mvilasboas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mvilasboas"/>
    <language>en</language>
    <item>
      <title>Instalando o NVM sem privilégios administrativos no Windows (10/11)</title>
      <dc:creator>Marcelo Vilas Boas</dc:creator>
      <pubDate>Thu, 19 Feb 2026 19:12:28 +0000</pubDate>
      <link>https://dev.to/mvilasboas/instalando-o-nvm-sem-privilegios-administrativos-no-windows-1011-jg9</link>
      <guid>https://dev.to/mvilasboas/instalando-o-nvm-sem-privilegios-administrativos-no-windows-1011-jg9</guid>
      <description>&lt;h4&gt;
  
  
  1️⃣ Pré-requisitos
&lt;/h4&gt;

&lt;p&gt;Windows 10 ou 11&lt;br&gt;
Acesso de usuário padrão (não é necessário ser administrador)&lt;br&gt;
Bash disponível (Git Bash ou WSL)&lt;br&gt;
PowerShell (padrão ou PowerShell Core)&lt;br&gt;
Desinstalar Node e NVM for Windows (&lt;strong&gt;evita conflitos&lt;/strong&gt;)&lt;/p&gt;
&lt;h4&gt;
  
  
  2️⃣ Download e Instalação do NVM
&lt;/h4&gt;

&lt;p&gt;Baixe a versão zip “no-install” do NVM para Windows:&lt;br&gt;
&lt;a href="https://github.com/coreybutler/nvm-windows/releases" rel="noopener noreferrer"&gt;https://github.com/coreybutler/nvm-windows/releases&lt;/a&gt;&lt;br&gt;
 → escolha nvm-noinstall.zip.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxngkghqt9dp0lqg3sjqi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxngkghqt9dp0lqg3sjqi.png" alt=" " width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Extraia o conteúdo em:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;C:\Users\marcelo.vilasboas\nvm&lt;/strong&gt; -&amp;gt; lembre-se de substituir &lt;strong&gt;marcelo.vilasboas&lt;/strong&gt; pelo seu usuário, em todos os pontos 😜&lt;/p&gt;

&lt;p&gt;O conteúdo deve incluir uma séria de arquivos, dentre eles:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;nvm.exe&lt;/li&gt;
&lt;li&gt;elevate.cmd&lt;/li&gt;
&lt;li&gt;elevate.vbs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Crie o arquivo &lt;strong&gt;settings.txt&lt;/strong&gt; neste mesmo diretório com as informações abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root: C:\Users\marcelo.vilasboas\nvm 
path: C:\Users\marcelo.vilasboas\nvm\nodejs
arch: 64 
proxy: none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;em&gt;PRO TIP:&lt;/em&gt;&lt;/strong&gt; 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).&lt;/p&gt;

&lt;p&gt;Para isto, basta digitar &lt;code&gt;cmd&lt;/code&gt; no Powershell e executar: &lt;code&gt;for %I in (.) do echo %~sI&lt;/code&gt;, retornará seu usuário, após, digite &lt;code&gt;exit&lt;/code&gt; e voltará para o Powershell.&lt;/p&gt;

&lt;h4&gt;
  
  
  3️⃣ Configuração de variáveis de ambiente de usuário (&lt;strong&gt;via Powershell&lt;/strong&gt;)
&lt;/h4&gt;

&lt;p&gt;Limpe as variáveis de ambiente de usuário existentes (por garantia):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[Environment]::SetEnvironmentVariable("NVM_HOME",$null,"User")&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[Environment]::SetEnvironmentVariable("NVM_SYMLINK",$null,"User")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Crie as variáveis de ambiente de usuário:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;[Environment]::SetEnvironmentVariable("NVM_HOME","C:\Users\marcelo.vilasboas\nvm","User")&lt;/code&gt;&lt;br&gt;
&lt;code&gt;[Environment]::SetEnvironmentVariable("NVM_SYMLINK","C:\Users\marcelo.vilasboas\nvm\nodejs","User")&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Atualize o PATH do usuário para incluir as novas variáveis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$oldPath = [Environment]::GetEnvironmentVariable("Path","User")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$newPath = "$oldPath;C:\Users\marcelo.vilasboas\nvm;C:\Users\marcelo.vilasboas\nvm\nodejs"

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[Environment]::SetEnvironmentVariable("Path",$newPath,"User")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Feche e abra o terminal para aplicar.&lt;/p&gt;

&lt;p&gt;Digite os comandos para verificar se foi aplicado corretamente:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;echo $env:NVM_HOME&lt;/code&gt;&lt;br&gt;
&lt;code&gt;echo $env:NVM_SYMLINK&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Deve retornar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\marcelo.vilasboas\nvm
C:\Users\marcelo.vilasboas\nvm\nodejs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verifique também se o PATH foi corretamente atualizado com estas novas variáveis:&lt;br&gt;
&lt;code&gt;$env:PATH -split ';'&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LEMBRANDO:&lt;/strong&gt; Se tiver NVM for Windows ou Node instalado, pode dar conflitos, desinstale.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testando instalação do NVM:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;nvm -v&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Resultado esperado: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuliyqjkfgmmj79tsu5q1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuliyqjkfgmmj79tsu5q1.png" alt=" " width="457" height="41"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  4️⃣ Estrutura de pastas do NVM
&lt;/h4&gt;

&lt;p&gt;Pasta base: C:\Users\marcelo.vilasboas\nvm&lt;br&gt;
Cada versão do Node: C:\Users\marcelo.vilasboas\nvm\v[versão]&lt;br&gt;
Link simbólico para uso atual: C:\Users\marcelo.vilasboas\nvm\nodejs&lt;/p&gt;
&lt;h4&gt;
  
  
  5️⃣ Instalando uma versão do Node via NVM
&lt;/h4&gt;

&lt;p&gt;Baixe a versão desejada:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nvm install 14.21.3&lt;/code&gt;&lt;br&gt;
&lt;code&gt;nvm install 25.6.1&lt;/code&gt;&lt;br&gt;
&lt;code&gt;nvm install latest&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Se houver erro de download de versões mais antigas do Node ou NPM, baixe manualmente o .ZIP do Node diretamente do site [&lt;a href="https://nodejs.org/en/about/previous-releases" rel="noopener noreferrer"&gt;https://nodejs.org/en/about/previous-releases&lt;/a&gt;] e extraia para C:\Users\marcelo.vilasboas\nvm\v[versão_node].&lt;/p&gt;

&lt;p&gt;Após, basta usar o comando abaixo para utilizar a versão desejada:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nvm use 25.6.1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OBS:&lt;/strong&gt; No meu caso, o comando &lt;code&gt;nvm use&lt;/code&gt; 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.&lt;/p&gt;
&lt;h4&gt;
  
  
  6️⃣ Script PowerShell para trocar versão do Node e instalar Yarn
&lt;/h4&gt;

&lt;p&gt;Criei um script para rodar em Powershell para instalar a versão desejada do NodeJS e já instalar o Yarn também.&lt;/p&gt;

&lt;p&gt;Verifique se já possui um profile com o comando &lt;code&gt;$PROFILE&lt;/code&gt;, deve aparecer algo como:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhah4t12gdcq9n6518zmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhah4t12gdcq9n6518zmw.png" alt=" " width="800" height="38"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se tiver, edite. Caso não exista, crie conforme a seguir:&lt;/p&gt;

&lt;p&gt;Cria estrutura de pasta:&lt;br&gt;
&lt;code&gt;New-Item -ItemType Directory -Force -Path (Split-Path $PROFILE)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Cria o arquivo: &lt;br&gt;
&lt;code&gt;New-Item -ItemType File -Force -Path $PROFILE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Para editar o arquivo:&lt;br&gt;
&lt;code&gt;notepad $PROFILE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Adicione o script abaixo e salve:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Execute o comando abaixo para ativar imediatamente sem reiniciar o Powershell:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;. $PROFILE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Como usar o script:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;use-node 14.21.3&lt;/code&gt;&lt;br&gt;
&lt;code&gt;use-node 25.6.1&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  7️⃣ Script Bash para Git Bash ou WSL
&lt;/h4&gt;

&lt;p&gt;Também criei para rodar em Bash, para isto adicione o script no ~/.bashrc ou ~/.zshrc.&lt;/p&gt;

&lt;p&gt;Para acessar, digite:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;nano ~/.bashrc&lt;/code&gt; ou &lt;code&gt;nano ~/.zshrc&lt;/code&gt; e adicione o script abaixo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;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 &amp;amp;&amp;gt; /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
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Salve e para aplicar alterações imediatamente no terminal, execute:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Uso:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;use-node 14.21.3&lt;/code&gt;&lt;br&gt;
&lt;code&gt;use-node 25.6.1&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  8️⃣ Gerenciamento de CLIs globais
&lt;/h4&gt;

&lt;p&gt;Cada versão do Node tem ambiente isolado, por isto:&lt;/p&gt;

&lt;p&gt;Yarn, TypeScript, ESLint, PNPM etc. precisam ser instalados por versão&lt;br&gt;
Script use-node instala Yarn automaticamente&lt;br&gt;
Você pode adicionar outras CLIs no mesmo bloco do script se desejar.&lt;/p&gt;

&lt;h4&gt;
  
  
  9️⃣ Manutenção no VS Code
&lt;/h4&gt;

&lt;p&gt;Sempre abra um terminal novo e rode use-node &lt;br&gt;
No PowerShell do VS Code, o profile $PROFILE deve conter a função, que pode ser diferente do Powershell do Windows.&lt;br&gt;
No Bash do VS Code, o ~/.bashrc ou ~/.zshrc deve conter a função.&lt;/p&gt;

&lt;p&gt;Isso garante que Node/Yarn estejam visíveis e atualizados no terminal&lt;/p&gt;

&lt;h4&gt;
  
  
  EXTRA TIPS
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;O foco foi fazer funcionar a troca de versão do node sem privilégios, mas:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Você pode criar script para terminal cmd, caso use;&lt;/li&gt;
&lt;li&gt;Você pode configurar versão do Yarn no próprio projeto, sem precisar deixar no script;&lt;/li&gt;
&lt;li&gt;Você pode adicionar mais comandos nos scripts;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CRÉDITOS:
&lt;/h4&gt;

&lt;p&gt;Este artigo foi baseado no artigo do &lt;em&gt;Cezar Augusto Mezzalira&lt;/em&gt;: &lt;a href="https://dev.to/cezarmezzalira/instalando-o-nvm-sem-privilegios-administrativos-no-windows-1011-23k7"&gt;https://dev.to/cezarmezzalira/instalando-o-nvm-sem-privilegios-administrativos-no-windows-1011-23k7&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  SE ESTE ARTIGO FOI ÚTIL:
&lt;/h4&gt;

&lt;p&gt;Comente, curta, salve e compartilhe... 👍&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>node</category>
      <category>tooling</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
