Instalando o NVM sem privilégios administrativos no Windows (10/11)
Tags: node, javascript, windows, powershell
Published: 2023-11-15 23:55:19

Existem alguns cenários onde não é possível instalar ferramentas de desenvolvimento sem ter privilégios administrativos.
Pensando nisso, escrevi esse tutorial para lhe ajudar a instalar NVM (Node Version Manager) nesse cenário.

## Executando o poweshell

Para esse tutorial, vamos usar o powershell para a maioria das nossas tarefas.

Por isso, vamos abri-lo clicando no menu iniciar, digitando `powershell` e depois clicando nele, conforme mostrado na imagem abaixo:

![Windows Powershell](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ym9dn4ysl5cl7t8hc7dz.png)

## Baixando o NVM

Acesse o link abaixo e baixe a versão mais recente (latest) do pacote:
<https://github.com/coreybutler/nvm-windows/releases/latest>


Para fazer nossa instalação, vamos precisar baixar o NVM para Windows em formato ZIP, conforme a imagem abaixo:

![NVM Windows ZIP](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dcfwik1sp1qfo2xxo9db.png)

<u>**PRO TIP: Você também pode usar o powershell para baixar o arquivo direto para sua pasta de Downloads:**</u>

```powershell
Start-BitsTransfer -Source 'https://github.com/coreybutler/nvm-windows/releases/download/1.1.11/nvm-noinstall.zip' -Destination "$($HOME)\Downloads"
```

## Extraindo arquivo para pasta do usuário

O próximo passo é extrairmos os arquivos do nvm do arquivo `nvm-noinstall.zip` para dentro da nossa pasta de usuário.

Vá até a pasta de Downloads, procure pelo arquivo `nvm-noinstall.zip`, clique com o botão direito e em seguida clique em `Extrair tudo...`, conforme a imagem abaixo:

![Extraindo arquivos](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ddafguk66anvbxduz2ja.png)

Na janela que abriu agora, vamos mudar o caminho de destino deixando algo como `C:\Users\Seu Usuário\nvm`, como na imagem abaixo:

![Utilitário de extração](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i8dnyqkna9rj754by2z1.png)

<u>**PRO TIP: Você pode usar o powershell para extrair para o local correto:**</u>

```powershell
Expand-Archive -Path $HOME/Downloads/nvm-noinstall.zip -DestinationPath $env:UserProfile/nvm -Force
```

## Criando arquivo de configurações do NVM

Agora, vamos criar nosso arquivo de configuração do nvm. Copie o comando abaixo e cole no powershell:

```powershell
notepad.exe $HOME\nvm\settings.txt
```

Em seguida, copie as linhas abaixo e cole no arquivo que foi aberto no notepad:

```txt
root: $HOME\nvm
path: $HOME\nvm\nodejs
arch: 64 
proxy: none
```

Antes de salvar e fechar, vamos precisar mudar o caminho do root e do path, apontando para nossa pasta de usuário.

Para evitar problemas com nome da sua pasta de usuário, vamos gerar o caminho dessa pasta no format curto do DOS.

Com o powershell aberto, digite `cmd`.

Em seguida, copie e cole o comando abaixo:


```cmd
for %I in (.) do echo %~sI
```

Agora, copie a linha logo acima de onde está o cursor conforme na imagem a seguir:

![Caminho curto no formato DOS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hzwo8rc8lmhhiraqeoa3.png)

Em seguida, no arquivo `settings.txt` aberto no notepad, substitua onde está `$HOME` pelo caminho que foi copiado no DOS anteriormente. 

Seu arquivo deve ficar parecido com isso:

```txt
root: C:\Users\CEZARM~1\nvm
path: C:\Users\CEZARM~1\nvm\nodejs
arch: 64 
proxy: none
```

> IMPORTANTE: Para continuar, digite o comando `exit` para voltar para o PowerShell.

## Finalizando a configuração com as variáveis de ambiente
Com os arquivos necessários no lugar, vamos criar as variáveis de ambiente para apontar para onde estão os arquivos do NVM.

### Removendo as variáveis existentes

Para evitar problemas, vamos remover as variáveis de ambiente executando linha a linha abaixo:

```powershell
[Environment]::SetEnvironmentVariable("NVM_HOME",$null,"User")
[Environment]::SetEnvironmentVariable("NVM_SYMLINK",$null,"User")
```

### Adicionando as variáveis atualizadas

Em seguida, vamos adicionar 

```powershell
[Environment]::SetEnvironmentVariable("NVM_HOME","$HOME\nvm","User")
[Environment]::SetEnvironmentVariable("NVM_SYMLINK","$HOME\nvm\nodejs","User")
```


### Adicionando ao Path do usuário as variáveis 

Por fim, vamos adicionar ao path do nosso usuário as novas variáveis de ambiente, executando linha a linha abaixo no powershell:

```powershell
$user_path = [System.Environment]::GetEnvironmentVariable("PATH","USER")
$user_path = $user_path +  "%NVM_HOME%;%NVM_SYMLINK%;"
[System.Environment]::SetEnvironmentVariable("PATH",$user_path,"USER")
```

## Testando a instalação do NVM

Se tudo deu certo, feche o powershell e abra novamente.

Em seguida, digite o comando `nvm -v`. Se tudo correu bem, a saída deverá ser conforme a imagem abaixo:


![NVM version](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3b0bhi0alc4314n67e4p.png)


## Instalando o Node.js e ativando localmente

A última etapa será executar `nvm install node 20.9.0`, que vai instalar a versão mais recente do Node.js 20. Se tudo deu certo, sua saída deverá ser parecida com essa:


![Node 20 Install](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/omcj3h5j31smpdbeajhy.png)

Em seguida, precisamos criar o link simbolico, para quando chamarmos o comando `node` seja buscado de dentro da pasta do nvm na pasta da versão 20.9.0 que instalamos anteriormente.

Para isso, vamos executar o seguinte comando:
```powershell
cmd /C mklink /j $home\nvm\nodejs $home\nvm\v20.9.0
```


Para finalizar, vamos executar o comando `node -v` e a saída deverá ser como a abaixo:


![Node Version](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5oscamm7mivu6j7b63e.png)

> Importante: Após criar o link, faça logoff ou reinicie a máquina para todas as aplicações carregarem o mesmo.

E assim finalizamos a instalação!

Precisa de ajuda sobre o tutorial acima? Esse tutorial foi útil para você? 
Deixe seu comentário abaixo e compartilhe para ajudar outras pessoas :)

Bons códigos!

Esse artigo foi baseado nesse artigo do Allen Kim no Medium: <https://medium.com/allenhwkim/windows-10-install-nvm-without-admin-rights-b51418edc480>