Node.js Melhores Práticas – Formas mais Inteligentes para Gerenciar Arquivos de Configuração e Variáveis

Mar 24, 2018 · 3 min de leitura

eu acho a prática de criar Nó separado.ficheiros de configuração js para gerir variáveis de configuração para diferentes ambientes (desenvolvimento, testes, encenação e produção) incómodos.

então eu acabei com uma solução que gerencia variáveis de configuração para todos os ambientes com um único nó.ficheiro de configuração do js.

Primeiro, vamos criar uma configuração.json na pasta de raiz / configuração, como em baixo. A idéia é o desenvolvimento é o ambiente padrão e contém todas as variáveis de configuração. Só poderá repetir as variáveis de configuração noutros ambientes se quiser sobrepor os valores das variáveis de configuração por omissão encontrados no ambiente de desenvolvimento por omissão.

de modo a que você possa ver, testar, encenar e produzir ambientes todos sobrepõem as variáveis de configuração e configuração de banco de dados. E os ambientes de encenação e produção também sobrepõem a variável de configuração node_port.

em seguida, vamos escrever algum código para implementar a lógica real. Criar configuração.js na pasta de raiz/configuração, como em baixo. Este código:

  1. lê o JSON encontrado no root / config.ficheiro json.
  2. define a configuração predefinida como o nó de desenvolvimento encontrado na configuração.json.
  3. define a configuração do ambiente como o nó de ambiente correspondente encontrado na configuração.json based on NODE_ENV environment variable value (which itself defaults to development if null).
  4. define a configuração final para a união da configuração padrão e do ambiente, chamando o método de junção de lodash.
  5. define a variável global gConfig com o valor da configuração final.
  6. regista o valor de gConfig.

Finalmente, vamos criar raiz/servidor.js para testar tudo isso em um navegador. Abaixo o código é auto explicativo. Testa-o definindo valores diferentes para a variável de ambiente NODE_ENV.

e aqui estão algumas imagens dos testes, definindo a variável de ambiente NODE_ env no servidor.js para desenvolvimento e encenação. Você pode ver que para o ambiente de teste, os valores para app_name, app_desc e json_indentation não mudam e são recolhidas a partir do ambiente de desenvolvimento, onde os valores para config_id, node_port de banco de dados e são substituídas.

Log de saída para o ambiente de desenvolvimento

Navegador de saída para o ambiente de desenvolvimento

Log de saída para o ambiente de teste

Navegador de saída para o ambiente de teste

Você pode clonar / download código acima do meu repositório GitHub aqui.

como bónus, nada o impede de incluir segredos como chaves da API ou senhas na configuração.json. Simplesmente encripta-o em repouso antes de o empurrar para o seu repositório de origem usando uma solução de encriptação enterprise grade como o serviço de gestão de chaves na nuvem da plataforma Google Cloud (CMS). E decriptá-lo em cada implantação usando a sua ferramenta de CI / CD favorito.

Check out my blog post Using Google Cloud Platform’s Cloud Key Management Service (KMS) to Encrypt / Decrypt Secrets for more info.

Happy Coding!

Deixe uma resposta

O seu endereço de email não será publicado.