Dotenv: gerenciando variáveis de ambiente

Dotenv: gerenciando variáveis de ambiente
Gabrielle Ribeiro Gomes
Gabrielle Ribeiro Gomes

Compartilhe

Introdução

O dia a dia de pessoas desenvolvedoras é cheio de situações desafiadoras. Por exemplo, você já esteve no meio do desenvolvimento de uma aplicação e precisou conectar em outro banco de dados que não era o seu banco local? Ou subiu um código no Github e com o acesso ao banco local e acabou sobrescrevendo o acesso ao banco de dados e a aplicação caiu?

Imagem que traz um gif animado. Há uma mesa com um computador e um gato de cor marrom sentado na cadeira. Ele está apoiado no teclado. E há um movimento de câmera, que foca o olhar do gato que lembra uma expressão de desconforto.

Fonte: media.tenor.com

Situações como essas são comuns quando estamos desenvolvendo projetos que possuem diversos ambientes sendo utilizados, tais como ambientes de desenvolvimento, testes e produção.

Com isso, se faz necessário o uso de diferentes variáveis de ambiente. Caso você queira se aprofundar mais sobre os diferentes ambientes, temos um artigo aqui na Alura sobre o assunto: O que são ambientes?

E como podemos lidar melhor com essas questões relacionadas a variáveis de ambiente dentro de projetos Node.JS?

Existe uma ferramenta que pode nos auxiliar com isso: o pacote Dotenv. E, para conhecermos mais sobre esse assunto, neste artigo você verá:

  • O que é o Dotenv;
  • Como instalar o Dotenv;
  • Como utilizar o Dotenv para facilitar o uso e gestão de variáveis de ambiente no desenvolvimento de suas aplicações com o Node.js.
Banner da promoção da black friday, com os dizeres: A Black Friday Alura está chegando. Faça parte da Lista VIP, receba o maior desconto do ano em primeira mão e garanta bônus exclusivos. Quero ser VIP

O que é o Dotenv

Antes de entendermos o que é o Dotenv e o que ele faz, você se lembra o que são variáveis de ambiente?

As variáveis de ambiente guardam os dados de configuração do sistema. Elas geralmente armazenam informações sensíveis como, por exemplo, chaves de APIs, credenciais de acesso a bancos de dados, localização de arquivos, portas HTTPs, etc.

Já que as variáveis de ambiente contêm informações privadas, é importante que elas não fiquem expostas. Sendo assim, uma boa prática é mantê-las separadas do código.

O Dotenv é um pacote que serve justamente para gerenciar as variáveis de ambiente dentro de um projeto Node.js. Essa ferramenta armazena a configuração dessas variáveis em um ambiente separado do código da aplicação.

Manter um arquivo de configuração nos traz facilidades no desenvolvimento de softwares, pois permite que os valores das variáveis de ambiente sejam facilmente alterados nos diferentes ambientes utilizados, sem a necessidade de alterar o código. Se faz necessário apenas alterar os valores das variáveis de ambiente no arquivo que as armazena.

Instalando o Dotenv

Imagine que você está desenvolvendo uma aplicação utilizando o Node.js e precisa acessar e manipular informações sobre os clientes em um banco de dados MySQL. Como as credenciais de acesso ao banco de dados são informações privadas, é uma boa ideia mantê-las separadas do código. Assim, você decide fazer a gestão dessas variáveis de ambiente através do Dotenv.

Mas então, como instalamos o Dotenv no nosso projeto?

Para instalar o Dotenv através do gerenciador de pacotes npm abra o terminal na pasta do seu projeto Node.js e digite o comando a seguir:

npm install dotenv

Para verificar se o Dotnet foi instalado corretamente faça o seguinte: ainda no terminal, digite o seguinte comando:

npm view dotnet version

Após digitar o comando, você poderá ver qual a versão instalada no seu projeto. Seu terminal vai exibir algo semelhante a imagem a seguir:

Imagem que traz o print do terminal do VSCode. Em destaque é mostrado o caminho do diretorio do projeto. Além disso, é mostrado o comando npm view dotnet version digitado no terminal. Também é exibido o número da versão do pacote Dotenv instalado.

Além disso, o Dotenv deverá aparecer como uma das dependências do seu projeto, dentro do arquivo package.json.

Imagem que traz print do arquivo package.json. É mostrado a lista de dependências do projeto, exibindo que o pacote Dotenv é uma das dependências. Além disso, é mostrado o número da versão do Dotenv que é compatível com o projeto.

Agora que finalizamos a instalação do pacote, podemos seguir com a configuração e uso do Dotenv em nosso projeto. Vamos lá?!

Criando um arquivo .env

Com o pacote Dotenv instalado em seu projeto, o primeiro passo para utilizá-lo é criar um arquivo chamado .env dentro do diretório raiz da sua aplicação. Esse arquivo é responsável por guardar as variáveis de ambiente do seu projeto. A estrutura de arquivos do seu projeto ficará semelhante a imagem a seguir:

Imagem que traz print da estrutura de arquivos do projeto. Destacado por um retângulo vermelho é mostrado o arquivo de configuração chamado .env

Vamos adicionar as credenciais de acesso ao seu banco de dados no arquivo .env. O formato utilizado neste arquivo é NOME_VARIAVEL=VALOR_VARIAVEL, sendo uma variável para cada linha do arquivo.

Desse modo, as nossas variáveis de ambiente referentes às credenciais de acesso ao banco de dados são: HOST, USER, PASSWORD, DATABASE.

  • HOST: que armazenará qual o ambiente que estamos utilizando, no nosso caso será o localhost, já que estamos no nosso computador local;
  • USER: que armazenará qual o usuário vai acessar o banco de dados, no nosso caso é o root;
  • PASSWORD: que guardará qual a senha do usuário, no nosso caso a senha também é root;
  • DATABASE: define qual base de dados será utilizada, no nosso projeto é a base sucos.

Ao adicionar essas variáveis e seus valores referentes, nosso arquivo .env ficará da seguinte maneira. Ah! E não se esqueça de salvar o arquivo. Confira a seguir:

Imagem que mostra o print do arquivo .env. É exibido o conteúdo desse arquivo, que possui quatro variáveis de ambiente com seus respectivos valores. Cada variável se encontra em uma linha do arquivo. A variável HOST tem o valor localhost. A variável USER possui o valor root. A variável PASSWORD também possui o valor root. E por fim a variável DATABASE possui o valor sucos. Todo o texto do arquivo possui a cor branca.

A propósito, nos arquivos .env o uso de aspas é opcional nos valores das variáveis, mesmo quando se trata de strings.

Caso você resolva adicionar aspas nos valores das strings, o arquivo continuará funcionando normalmente. Apesar de opcional, o uso das aspas pode ser interessante para manter o arquivo mais organizado. Confira na imagem abaixo:

Imagem que mostra um print do arquivo .env. É exibido o conteúdo desse arquivo, que possui quatro variáveis de ambiente com seus respectivos valores. Cada variável se encontra em uma linha do arquivo. Os valores das variáveis se encontram entre aspas duplas. Todo o texto do arquivo possui a cor branca.

Note que o texto no arquivo se encontra em uma única cor. Caso a quantidade de variáveis de ambiente cresça, o que é comum no desenvolvimento de software, esse padrão monocromático dificulta a leitura e identificação das variáveis e seus valores.

Assim, caso você utilize como IDE o VS Code, saiba que ele fornece algumas extensões para facilitar o uso da ferramenta Dotenv como, por exemplo, a extensão DotENV que serve para trazer cores ao arquivo .env, facilitando assim sua leitura. Mas, calma lá! Falaremos com mais detalhes sobre o uso de extensões do VS Code para o Dotenv mais adiante nesse artigo.

É muito importante que você não envie o arquivo .env para o repositório do git que você estiver utilizando. Em um sistema git, você pode adicionar o .env no .gitignore. Assim, o arquivo .env será automaticamente ignorado nos commits.

Uma prática muito comum é criar um arquivo de exemplo do .env que contenha o nome de todas as variáveis de ambiente e enviar esse arquivo para o Github. Dessa forma, outras pessoas que contribuírem com o desenvolvimento do projeto podem facilmente preencher o seu próprio .env com as informações do seu próprio ambiente, sem que nenhuma variável seja esquecida.

Nesse arquivo de exemplo também podemos adicionar comentários explicando qual o propósito de cada variável de ambiente. Assim, vamos nomear nosso arquivo de exemplo como exemplo.env, conforme mostra a imagem a seguir:

Imagem do print do arquivo exemplo.env. É mostrado o conteúdo desse arquivo, que possui um comentário dizendo "Credenciais de acesso ao banco de dados”. Nas quatro linhas seguintes possui quatro variáveis de ambiente, sendo elas: HOST, USER, PASSWORD e DATABASE. As variáveis não possuem um valor atribuído a elas.

Agora que temos nosso arquivo .env criado, como podemos utilizar os valores das variáveis salvas nele em nosso projeto?

Falaremos disso na sequência, bora lá!

Como utilizar as variáveis de ambiente

O nosso arquivo com as as variáveis de ambiente está criado, mas nosso programa ainda não tem acesso a essas variáveis. Então precisamos conectar o código com o arquivo e utilizar as credenciais guardadas nas variáveis para acessar nosso banco de dados.

Para isso, temos o pacote Dotenv que instalamos. Ele será responsável pela leitura e configuração das variáveis de ambiente.

Como em qualquer outro módulo do Node.js, é necessário importar o módulo para conseguir usar suas funcionalidades. Por isso, a primeira coisa que precisamos fazer é realizar a importação do Dotenv, através de uma chamada do require do módulo dotenv. Assim, adicionamos o seguinte trecho em nosso código:

require('dotenv').config()

Agora que importamos o módulo, podemos utilizá-lo dentro da nossa aplicação. A próxima etapa é acessar nossas variáveis de ambiente. Fazemos isso através do process.env. O formato usado para acessar as variáveis de ambiente é process.env.NOME_VARIAVEL.

O process é um recurso que garante que as variáveis de ambiente utilizadas existam somente dentro da aplicação que estamos utilizando, para que não haja conflito caso nosso computador esteja rodando mais de uma aplicação Node.js ao mesmo tempo. Mesmo que essas diferentes aplicações tenham variáveis de ambiente com nomes iguais. Você pode verificar mais detalhes sobre o process na documentação do Node.js.

Vamos nos conectar ao banco de dados utilizando as credenciais que estão nas variáveis de ambiente do nosso arquivo .env. Para lidar com as questões relacionadas ao banco de dados MySQL em nossa aplicação, vamos utilizar o módulo mysql2 do npm:

require('dotenv').config()
const mysql = require('mysql2')

const connection = mysql.createConnection({
    host: process.env.HOST,
    user: process.env.USER,
    password: process.env.PASSWORD,
    database: process.env.DATABASE
  });

Desse modo, conseguimos realizar a conexão no banco de dados e estamos prontos para utilizar os dados armazenados no banco em nossa aplicação.

Assim, você agora é capaz de gerenciar suas variáveis de ambiente usando o Dotenv. Isso, sem dúvidas, vai facilitar sua rotina como pessoa desenvolvedora. Mas será que isso é tudo que podemos fazer com o Dotenv?

Existem outras ferramentas que podem melhorar ainda mais o uso do Dotenv. Por exemplo, as extensões do VSCode. Vamos saber mais no próximo tópico?

Dicas VSCode

O VSCode possui algumas extensões que podem melhorar o uso do módulo Dotenv.

Lembra que o texto em nosso arquivo .env possuía uma única cor,o que dificultava sua leitura? Uma solução para isso é a extensão DotENV. Essa extensão colore o texto do arquivo .env e destaca os diferentes elementos da sua estrutura.

Você pode instalar essa extensão por meio do link a seguir:

Após a instalação da extensão, nosso arquivo .env ficou com uma aparência melhor. Agora as variáveis e seus valores têm cores diferentes, o que torna mais fácil a leitura e identificação dos elementos do arquivo, como se pode conferir na imagem abaixo:

Imagem que mostra o print do arquivo .env após a instalação da extensão DotENV. O texto do nome das variáveis tem a cor azul. E o texto dos valores das variáveis possui a cor laranja.

Imagine que nosso projeto Node.js está crescendo e acabou sendo necessário utilizar vários ambientes, pois agora temos um ambiente para desenvolvimento, um para testes e outro para produção. Dessa forma, as variáveis de ambiente para cada um desses cenários muda e você precisa realizar a alteração do arquivo .env sempre que trocar de ambiente. Existe uma extensão do VSCode, chamada .ENV Switcher, que pode nos ajudar com isso.

Essa extensão serve para auxiliar o uso de diferentes arquivos de configuração .env, para que seja possível navegar entre os ambientes sem precisar alterar os valores em um único arquivo.

Para instalar essa extensão, use o link a seguir:

Com essa extensão nós criamos um arquivo .env para cada ambiente que estamos utilizando, com as suas respectivas variáveis de ambiente. Assim, teremos três novos arquivos:

  • dev.env: para o ambiente de desenvolvimento;
  • test.env: para o ambiente de testes;
  • prod.env: para o ambiente de produção.

Confira a seguir:

Imagem que mostra o print da estrutura de arquivos do projeto. Está destacado com retângulos vermelhos os arquivos de configuração chamados: dev.env, prod.env e test.env.

Com a extensão .ENV Switcher instalada, para alterar qual ambiente estamos utilizando, basta clicar na opção escrito Select .env que aparecerá no menu inferior esquerdo do VSCode, conforme imagem abaixo:

Imagem que mostra print do menu inferior esquerdo do VSCode. Está destacado com um retângulo vermelho uma opção escrito Select .env.

Na sequência, vamos selecionar qual arquivo .env queremos utilizar no menu que será aberto na parte superior do VSCode. Confira:

Imagem que mostra o print de um menu superior no VSCode. Esse menu mostra a lista de arquivos de configuração .env que existem no projeto, para que seja selecionado um desses arquivos.

Assim, podemos facilmente alterar nossas variáveis de ambiente entre os ambientes sem precisar fazer alterações no arquivo .env. Lembre-se de adicionar todos esses arquivos no .gitignore, pois não queremos colocar no Github os dados privados desses arquivos.

Conclusão

Neste artigo, aprendemos o que é o Dotnet, como instalá-lo e como utilizá-lo para otimizar nossa gestão de variáveis de ambiente em um projeto Node.js. Criamos um arquivo .env para guardar as credenciais de acesso a um banco de dados MySQL. E depois acessamos o valor dessas variáveis e ambiente em nossa aplicação. Além disso, também vimos como utilizar extensões do VSCode para tornar mais prático o uso do pacote Dotenv.

Assim, você agora é capaz de gerenciar suas variáveis de ambiente em seus projetos Node.js de forma mais segura e fácil através do pacote Dotnet.

Referências

Gabrielle Ribeiro Gomes
Gabrielle Ribeiro Gomes

Gabrielle é estudante de Engenharia de Software na Universidade de Brasília - UnB. Faz parte do Scuba Team da Alura atuando principalmente com Python. É apaixonada por programação, robótica, machine learning e gatos.

Veja outros artigos sobre Programação