Configuração automática por ambiente em Node.js

Algo que eu normalmente faço em meus projetos node / express é manter arquivos de propriedades de configuração separados por ambiente (por exemplo, ‘desenvolvimento’, ‘produção’, etc). Aqui está um resumo de como implementei um módulo simples que carrega o arquivo apropriado com base no NODE_ENV atual e o retorna como o objeto de configuração: https://gist.github.com/4076234 . Ele espera ter os arquivos ‘development.js’ e ‘production.js’, por exemplo, no mesmo diretório. Então, quando você executa o nó da seguinte maneira:

> NODE_ENV=production node app.js

Você pode acessar seu objeto de configuração da seguinte maneira:

var config = require('./config');

E ‘config’ conterá tudo em ./config/production.js. Observe que em um ambiente de produção, você provavelmente iniciaria o nó usando ‘para sempre’ ou semelhante (é o que eu uso), mas mesmo assim, ainda funciona. Então, por exemplo, se você exportar ‘mongodb.host’ em seus arquivos de configuração, poderá acessá-lo por meio de:

config.mongodb.host

Isso retornará o host mongodb para o ambiente atual. Se o nó for iniciado sem um ambiente explícito, o padrão é ‘desenvolvimento’. Se um ambiente for especificado e não houver um arquivo <env> .js correspondente no diretório ./config, ele lançará uma exceção.

Um exemplo disso em um projeto: https://github.com/cbumgard/node-boot . Veja ./app.js, ./config/index.js, ./config/development.js e ./config/production.js para ver os detalhes.