2013-02-13 2 views
0

В отличие от Rails, кажется, не существует, чтобы быть принятым способом загрузки среды конкретных конфигурационных файлов в Node.js.Использование окружающей среды определенные файлы конфигурации в Node.js

В настоящее время я использую следующие:

config/development.js и config/production.js:

module.exports = { 
    'db': 'mongodb://127.0.0.1/example_dev', 
    'port': 3002 
}; 

с последующим следующее в верхней части моего app.js файла:

var config = require('./config/' + process.env.NODE_ENV + '.js');

Этот шаблон работает очень хорошо, однако это заставляет меня передавать этот файл конфигурации на которые нужны ему. Это становится своего рода неуклюжим, например:

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

.. и в routes/index.js:

modules.export = function(config) { 
    this.index = function... 
    this.show = function... 
}; 

Etc и т.д. Узор модуль просто, кажется, довольно неуклюжей, когда дело с чем-то, что должно быть глобальными, например, настройками конфигурации. Я мог бы потребовать файл конфигурации в верхней части каждого файла, который нуждается в ней, а также, но это не кажется идеальным либо.

Кто-нибудь есть лучшие практики для включения файла конфигурации и сделать его доступным во всем мире?

+0

в конфигурационных файлах вы можете сделать 'конфиг = {...}' (без 'var'), и это будет глобальное ... – MiniGod

+0

или' конфиг = требуется («./ конфигурации /» + процесс. env.NODE_ENV +».js');' (опять-таки, без 'var') – MiniGod

ответ

0

Вы можете просто прикрепить его к глобальному объекту процесса:

app.js:

var config = require('./config/' + process.env.NODE_ENV + '.js'); 
process.config = config; 

aywhere еще в вашем приложении

console.log(process.config); 

Да, это бит опасен тем, что он может быть перезаписан в любом месте, но это все еще довольно простой подход.

Смежные вопросы