Skip to main content

Pacote Config

  • Pacote Config

O pacote config do NPM é uma biblioteca de gerenciamento de configurações para aplicativos Node.js. Ele facilita a separação e organização das configurações do seu aplicativo em diferentes ambientes (desenvolvimento, produção, etc.) e ajuda a evitar o uso de variáveis de configuração no código-fonte.

Como Funciona o config

  1. Estrutura de Arquivos de Configuração: O config funciona a partir de arquivos de configuração armazenados na pasta config/ na raiz do projeto. Esses arquivos contêm as configurações para diferentes ambientes.

  2. Configurações por Ambiente: Você pode criar diferentes arquivos de configuração para cada ambiente. O nome do arquivo deve seguir a convenção default.json, development.json, production.json, etc. O ambiente é definido pela variável NODE_ENV, então, se o valor de NODE_ENV for production, o config buscará o arquivo production.json.

  3. Herança de Configurações: O arquivo default.json é considerado a configuração padrão. Se você quiser alterar configurações específicas para um determinado ambiente, pode criar um arquivo específico para aquele ambiente (ex: production.json), e ele herdará as configurações de default.json, sobrescrevendo apenas as propriedades que você deseja alterar.

  4. Uso de Variáveis de Ambiente: O config também permite a sobrecarga de valores usando variáveis de ambiente e outras fontes dinâmicas, como arquivos .env.

Exemplo de Uso

1. Instalação

Para instalar o pacote:

npm install config

2. Estrutura do Projeto

Crie a pasta config/ na raiz do projeto e adicione os arquivos de configuração:

my-app/
├── config/
│ ├── default.json
│ ├── development.json
│ └── production.json
├── src/
│ └── index.js
└── package.json

3. Exemplo de Arquivos de Configuração

default.json (Configurações padrão):

{
"port": 3000,
"db": {
"host": "localhost",
"port": 5432,
"name": "myapp"
},
"secret": "default-secret"
}

development.json (Configurações para ambiente de desenvolvimento):

{
"db": {
"host": "localhost-dev",
"name": "myapp_dev"
}
}

production.json (Configurações para produção):

{
"port": 8000,
"db": {
"host": "prod-db-server",
"name": "myapp_prod"
},
"secret": "production-secret"
}

4. Usando o config no Código

Dentro do seu código, você pode acessar as configurações através do módulo config:

const config = require('config');

const port = config.get('port');
const dbConfig = config.get('db');

console.log(`App running on port ${port}`);
console.log(`Database host: ${dbConfig.host}, name: ${dbConfig.name}`);

Neste exemplo, o config.get() é usado para obter valores das configurações. A estrutura das configurações é baseada nos arquivos JSON que você definiu.

  • Se o ambiente for development, o config.get('db.host') retornará localhost-dev.
  • Se o ambiente for production, o config.get('port') retornará 8000, e o banco de dados será o configurado em production.json.

Gerenciando Ambientes com NODE_ENV

O ambiente padrão é development, mas você pode mudar para outro ambiente como produção configurando a variável de ambiente NODE_ENV.

Exemplo de como rodar o aplicativo em produção:

NODE_ENV=production node src/index.js

O config então carrega o arquivo production.json e sobrescreve as configurações específicas do ambiente de produção.

Sobrescrevendo Configurações com Variáveis de Ambiente

Se você quiser sobrescrever alguma configuração usando uma variável de ambiente, o config permite isso. Por exemplo, você pode criar um arquivo chamado custom-environment-variables.json dentro do diretório config/, que mapeia uma configuração para uma variável de ambiente.

custom-environment-variables.json:

{
"db": {
"host": "DB_HOST",
"name": "DB_NAME"
}
}

Se você definir DB_HOST e DB_NAME no ambiente, elas sobrescreverão os valores definidos nos arquivos JSON.

export DB_HOST=custom-db-host
export DB_NAME=custom-db-name

Com essas variáveis configuradas, os valores db.host e db.name serão obtidos diretamente das variáveis de ambiente.

Recursos Adicionais

  • Tipos de arquivos suportados: O config suporta arquivos de configuração em JSON, YAML, XML e até JavaScript.
  • Foco em segurança: Para garantir segurança, é recomendado que você mantenha dados sensíveis (como chaves de API) em variáveis de ambiente ou use serviços como dotenv.

Conclusão

O pacote config é uma ferramenta poderosa para gerenciamento de configurações em aplicações Node.js. Ele facilita a organização das configurações em ambientes diferentes, permite a utilização de variáveis de ambiente, e suporta sobrecargas de valores de maneira segura e eficiente.