Instalar o Node.js no WSL2 (Subsistema do Windows para Linux)

Se você está usando o Node.js em um contexto profissional, considera a velocidade de desempenho e a compatibilidade de chamadas do sistema importantes, deseja executar contêineres do Docker que aproveitam os workspaces do Linux e evitam a necessidade de manter scripts de build do Linux e do Windows ou simplesmente prefere usar uma linha de comando do Bash, instale o Node.js no Subsistema do Windows para Linux (mais especificamente, no WSL 2).

O uso do WSL (Subsistema do Windows para Linux) permite que você instale sua distribuição preferida do Linux (o Ubuntu é o nosso padrão), de modo que você possa ter consistência entre o ambiente de desenvolvimento (local no qual você escreve o código) e o ambiente de produção (servidor no qual o código é implantado).

Observação

Se você é iniciante no desenvolvimento com o Node.js e quer aprender a usá-lo rapidamente, instale o Node.js no Windows. Essa recomendação também se aplica se você planeja usar um ambiente de produção do Windows Server.

Instalar o WSL 2

O WSL 2 é a versão mais recente disponível do Windows e é recomendável para fluxos de trabalho profissionais de desenvolvimento do Node.js. Para habilitar e instalar o WSL 2, siga as etapas na documentação de instalação do WSL. Essas etapas incluirão a escolha da distribuição do Linux (por exemplo, o Ubuntu).

Após instalar o WSL 2 e uma distribuição do Linux, abra a distribuição do Linux (encontrada no menu Iniciar do Windows) e verifique a versão e o codinome usando o comando: lsb_release -dc.

É recomendável atualizar a distribuição do Linux regularmente, inclusive imediatamente após a instalação, para garantir que os pacotes são os mais recentes. O Windows não cuida automaticamente dessa atualização. Para atualizar a distribuição, use o comando: sudo apt update && sudo apt upgrade.

Instalar o Terminal do Windows (opcional)

O Terminal do Windows é um shell de linha de comando aprimorado que permite executar várias guias, de modo que você possa alternar rapidamente entre as linhas de comando do Linux, o prompt de comando do Windows, o PowerShell, a CLI do Azure ou o que preferir usar. Você também pode criar associações de chave personalizadas (teclas de atalho para abrir ou fechar guias, copiar e colar etc.), usar o recurso de pesquisa, personalizar o terminal com temas (esquemas de cores, tamanhos e estilos de fonte, imagem/desfoque/transparência da tela de fundo), entre outros. Saiba mais na documentação do Terminal do Windows.

Instale o Terminal do Windows usando a Microsoft Store: com a instalação dele por meio da Store, as atualizações serão processadas automaticamente.

Instalar NVM, Node.js e NPM

Além de você escolher se deseja instalá-lo no Windows ou no WSL, há opções adicionais a serem feitas ao instalar o Node.js. É recomendável usar um gerenciador de versão, pois as versões mudam muito rapidamente. Provavelmente, você precisará alternar entre várias versões do Node.js de acordo com as necessidades de diferentes projetos nos quais está trabalhando. O Node Version Manager, mais comumente chamado de NVM, é a maneira mais popular de instalar várias versões do Node.js. Veremos as etapas para instalar o NVM e, em seguida, usá-lo para instalar o Node.js e o NPM (Node Package Manager). Há gerenciadores de versão alternativos que serão considerados e abordados na próxima seção.

Importante

É sempre recomendável remover todas as instalações existentes do Node.js ou do NPM do seu sistema operacional antes de instalar um gerenciador de versão, pois os diferentes tipos de instalação podem levar a conflitos estranhos e confusos. Por exemplo, a versão do Node que pode ser instalada com o comando apt-get do Ubuntu está desatualizada no momento. Para obter ajuda com a remoção de instalações anteriores, confira Como remover o Node.js do Ubuntu.

  1. Abra a linha de comando do Ubuntu (ou a distribuição de sua escolha).

  2. Instale o cURL (uma ferramenta usada para baixar conteúdo da Internet na linha de comando) com: sudo apt-get install curl

  3. Instale o NVM, com: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

    Observação

    A instalação da versão mais recente do NVM usando cURL substituirá a mais antiga, deixando intacta a versão do Node que você usou o NVM para instalar. Para obter mais informações, consulte a página do projeto do GitHub para obter as informações mais recentes de versão sobre o NVM.

  4. Para verificar a instalação, digite: command -v nvm ...isso deverá retornar 'nvm'. Se você receber 'comando não encontrado' ou nenhuma resposta, feche o terminal atual, reabra-o e tente novamente. Saiba mais no repositório GitHub do NVM.

  5. Lista quais versões do Node estão instaladas no momento (não deve ter nenhuma neste ponto): nvm ls

    NVM list showing no Node versions

  6. Instale as versões LTS atuais e estáveis do Node.js. Em uma etapa posterior, você aprenderá a alternar entre as versões ativas do Node.js com um comando nvm.

    • Instale a versão LTS estável atual do Node.js (recomendado para aplicativos de produção): nvm install --lts
    • Instale a versão atual do Node.js (para testar os aprimoramentos e recursos mais recentes do Node.js, mas que têm mais probabilidade de ter problemas): nvm install node
  7. Liste quais versões do Node estão instaladas: nvm ls ... agora você deve ver listadas as duas versões que acabou de instalar.

    NVM list showing LTS and Current Node versions

  8. Verifique se o Node.js está instalado e a versão padrão atual com: node --version. Em seguida, verifique se você também tem o NPM, com: npm --version (Você também pode usar which node ou which npm para ver o caminho usado para as versões padrão).

  9. Para alterar a versão do Node.js que você deseja usar para um projeto, crie um diretório de projeto mkdir NodeTest e insira o diretório cd NodeTest. Em seguida, digite nvm use node para alternar para a versão atual ou nvm use --lts para alternar para a versão LTS. Você também pode usar o número específico para qualquer versão adicional instalada, como nvm use v8.2.1. (Para listar todas as versões disponíveis do Node.js, use o comando: nvm ls-remote).

Se você estiver usando o NVM para instalar o Node.js e o NPM, não será necessário usar o comando SUDO para instalar novos pacotes.

Gerenciadores de versão alternativos

Embora o NVM seja atualmente o gerenciador de versão mais popular para o nó, há algumas alternativas a serem consideradas:

  • O n é uma alternativa nvm de longa duração que realiza a mesma coisa com comandos ligeiramente diferentes e é instalada por meio de npm, em vez de um script Bash.
  • O fnm é um gerenciador de versão mais recente, que alega ser muito mais rápido do que nvm. (Ele também usa o Azure Pipelines.)
  • O Volta é um novo gerenciador de versão da equipe do LinkedIn que alega uma velocidade aprimorada e suporte multiplataforma.
  • O asdf-vm é uma CLI para vários idiomas, como ike gvm, nvm, rbenv e pyenvv (e muito mais), tudo em um.
  • O nvs (Node Version Switcher) é uma alternativa nvm multiplataforma com a capacidade de integração ao VS Code.

Instalar o Visual Studio Code

Recomendamos usar o Visual Studio Code com o pacote de extensão de desenvolvimento remoto para projetos do Node.js. Isso divide o VS Code em uma arquitetura de "cliente-servidor", com o cliente (a interface do usuário do VS Code) em execução no sistema operacional Windows e o servidor (seu código, Git, plug-ins etc.) em execução "remotamente" na distribuição do Linux do seu WSL.

Observação

Esse cenário "remoto" é um pouco diferente do que você pode estar acostumado. O WSL dá suporte a uma distribuição do Linux real em que o código do projeto está em execução, separadamente do sistema operacional Windows, mas ainda em seu computador local. A extensão Remote-WSL se conecta ao seu subsistema Linux como se fosse um servidor remoto, embora não esteja em execução na nuvem… ainda está em execução no computador local, no ambiente do WSL que você habilitou para ser executado em paralelo com o Windows.

Outros editores de código, como o IntelliJ, o Sublime Text, o Brackets etc., também funcionarão com um ambiente de desenvolvimento do WSL 2 do Node.js, mas talvez não tenham os mesmos tipos de recursos remotos oferecidos pelo VS Code. Esses editores de código podem ter problemas para acessar a localização da rede compartilhada do WSL (\wsl$\Ubuntu\home) e tentarão compilar os arquivos do Linux usando as ferramentas do Windows, o que, provavelmente, não será o desejado. A extensão do WSL Remoto no VS Code cuida dessa compatibilidade para você. Com outros IDEs, talvez seja necessário configurar um servidor X. Em breve, haverá suporte para a execução de aplicativos de GUI no WSL (como um IDE do editor de códigos).

Os editores de texto baseados em terminal (vim, emacs, nano) também são úteis para fazer alterações rápidas diretamente dentro do seu console. O artigo Emacs, Nano ou Vim: escolha seu editor de texto baseado em terminal com sabedoria explica bem sobre algumas diferenças e um pouco sobre como usar cada um deles.

Para instalar o VS Code e a extensão Remote-WSL:

  1. Baixe e instale o VS Code para Windows. O VS Code também está disponível para Linux, mas o Subsistema do Windows para Linux não dá suporte a aplicativos de GUI e, portanto, precisamos instalá-lo no Windows. Não se preocupe, você ainda poderá fazer a integração à linha de comando e às ferramentas do Linux usando a Extensão WSL – Remoto.

  2. Instale a Extensão WSL – Remoto no VS Code. Isso permite que você use o WSL como o ambiente de desenvolvimento integrado e cuidará da compatibilidade e dos caminhos para você. Saiba mais.

Importante

Se você já tiver o VS Code instalado, precisará verificar se tem a versão de maio 1.35 ou posterior para instalar a Extensão do WSL Remoto. Não recomendamos o uso do WSL no VS Code sem a extensão do WSL Remoto, pois você perderá o suporte de preenchimento automático, depuração, linting etc. Curiosidade: Essa extensão do WSL é instalada em $HOME/.vscode-server/extensions.

Extensões úteis do VS Code

Embora o VS Code venha com muitos recursos prontos para uso para desenvolvimento do Node.js, há algumas extensões úteis que você pode considerar instalar e que estão disponíveis no Pacote de extensão do Node.js. Instale todas ou escolha a que parecer mais útil para você.

Para instalar o pacote de extensão do Node.js:

  1. Abra a janela Extensões (Ctrl + Shift + X) no VS Code.

    A janela Extensões agora está dividida em três seções (porque você instalou a extensão Remote-WSL).

    • "Local – Instalado": as extensões instaladas para uso com o sistema operacional Windows.
    • "WSL:Ubuntu-18.04 – Instalado": as extensões instaladas para uso com o sistema operacional Ubuntu (WSL).
    • "Recomendado": as extensões recomendadas pelo VS Code com base nos tipos de arquivo em seu projeto atual.

    VS Code Extensions Local vs Remote

  2. Na caixa de pesquisa na parte superior da janela Extensões, digite: Pacote de extensão do Node (ou o nome de qualquer extensão que você estiver procurando). A extensão será instalada para as instâncias local ou WSL do VS Code, dependendo de onde você tiver aberto o projeto atual. Você pode saber selecionando o link remoto no canto inferior esquerdo da janela do VS Code (em verde). Ele fornecerá a opção de abrir ou fechar uma conexão remota. Instale suas extensões do Node.js no ambiente "WSL:Ubuntu-18.04".

    VS Code remote link

Algumas extensões adicionais que talvez você queira considerar incluem:

  • Depurador JavaScript: depois de concluir o desenvolvimento no lado do servidor com o Node.js, você precisará desenvolver e testar o lado do cliente. Essa extensão é um depurador JavaScript baseado em DAP. Ele depura Node.js, Chrome, Edge, WebView2, extensões do VS Code e muito mais.
  • Mapas de teclas de outros editores: essas extensões poderão ajudar na familiaridade com seu ambiente se você estiver fazendo a transição de outro editor de texto (como Atom, Sublime, Vim, eMacs, Notepad++ etc.).
  • Sincronização de configurações: permite que você sincronize suas configurações do VS Code em diferentes instalações usando o GitHub. Se você trabalha em diferentes computadores, isso ajuda a manter seu ambiente consistente entre eles.

Configurar o Git (opcional)

Para configurar o Git para um projeto Node.js no WSL, confira o artigo Introdução ao uso do Git no Subsistema do Windows para Linux na documentação do WSL.