Gerenciamento de variáveis de ambiente

Em:

Este artigo se propõe a trazer uma das diversas maneiras de gerenciar variáveis de ambiente no desenvolvimento.

As variáveis de ambiente ajudam a definir valores que não queremos codificar diretamente em nosso código fonte. Variáveis que nos permitem personalizar o comportamento do código, dependendo do ambiente no qual ele está sendo ou será executado.

Digamos que estamos criando um aplicativo que usa a conexão com o banco de dados para carregar alguns recursos. O banco de dados exige que usemos alguns dados de acesso como host, port, username, e password.

A maneira mais comum de definir variáveis de ambiente é declarando-as em nosso arquivo .bash_profile.

Isso geralmente funciona bem – a menos que tenhamos, por exemplo, outro projeto que também usa credenciais de banco de dados. Se esse for o cenário, então não podemos nomear as variáveis da mesma forma porque as variáveis de ambiente são globais; portanto, tudo o que resta é utilizar namespaces. E daqui algum tempo, utilizando tal abordagem, o nosso arquivo .bash_profile poderá ficar muito grande. Não só isso, mas provavelmente teremos complicações quando for necessário excluir uma variável de ambiente, pelo fato de não termos mais tanta certeza de que ela não está sendo usada em outro lugar.

Variáveis de ambiente locais (Uma possível solução)

Utilizar variáveis de ambiente? Sim, afinal elas só existem no âmbito de um determinado projeto.

É do conhecimento comum que os valores que são sensíveis ou dependem do ambiente do código não devem ser comprometidos com o controle de versão. Então, não se preocupe, pois não vamos fazer isso. Para resolver essa questão, vamos utilizar o famoso .gitignore.

Crie um arquivo chamado .gitignore e adicione a seguinte linha ao seu arquivo.

.env

Assim, estaremos seguros de que nossos dados não serão comprometidos.

Configurações

Devemos, de alguma forma, ler o nosso arquivo de configuração. Para isso, vamos utilizar o pacote dotenv:
$ npm install dotenv --save

Dotenv é um módulo de dependência que carrega variáveis de ambiente de um arquivo .env para process.env.

Criando o nosso arquivo de configuração

Criaremos um arquivo com nome .env no diretório pai do nosso projeto e adicionaremos as variáveis específicas do ambiente da seguinte forma:

// exemplo de variáveis de configuração do banco de dados
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASS=123456

Por padrão, a biblioteca dotenv irá procurar por um arquivo chamado .env para definir as variáveis de ambiente, então certifique-se de criar esse arquivo.

E apenas com isso, teremos acesso a essas chaves e valores que definimos no nosso arquivo .env por meio do process.env.

Agora podemos buscar as configurações do nosso projeto da seguinte maneira:

// Utilizando as variáveis definidas no arquivo .env
// process.env.VAR_NAME
    
let db = require('db')
db.connect({
    host: process.env.DB_HOST
  , username: process.env.DB_USER
  , password: process.env.DB_PASS
})

Para facilitar o entendimento dos outros desenvolvedores, podemos criar um arquivo .example-env com valores simbólicos/representativos padrão das variáveis de ambiente que o projeto precisa para nosso ambiente de desenvolvimento.

Nota: Vale lembrar que esse arquivo não substitui a documentação do projeto, mas a complementa.

Agora que nosso ambiente de desenvolvimento está pronto, temos variáveis de ambiente locais que não entram em conflito entre diferentes projetos.

Nota: É importante lembrar que esta configuração só deve ser usada para o ambiente de desenvolvimento, no ambiente de produção você deve seguir práticas recomendadas pelo seu serviço de hospedagem.

Conclusão

Essa foi uma breve introdução sobre o uso de variáveis de ambiente em desenvolvimento. Espero que isso ajude vocês como eles me ajudaram. Se você ficou curioso e quer aprender mais, dê uma atenção para os seguintes tópicos:

Patrocinadores BrazilJS

Gold

Silver

Bronze

Apoio

BrazilJS® é uma iniciativa NASC.     Hosted by Getup