Как я могу передать значение иерархической конфигурации в nconf в командной строке?
Двоеточия разделяют иерархии nconf, например,
{
"AUTH": {
"ENABLED": true
}
}
Доступ через:
nconf.get("AUTH:ENABLED");
Я хотел бы переопределить это через параметры среды и / или командной строки в npm start
например,
AUTH:ENABLED=false npm start
Это терпит неудачу и под bash и под zsh из-за двоеточия. Спасаясь от толстой кишки \
не помогает
Следующее также не выполняется при любых обстоятельствах (иерархических или нет):
npm start --AUTH:ENABLED=false
Как я могу передать значение иерархической конфигурации через nconf/optimist таким образом, чтобы это работало?
1 ответ
Проще всего настроить nconf на использование менее страшного символа-разделителя в соответствии с документацией:
//
// Or use both options
//
nconf.env({
separator: '__',
whitelist: ['database__host', 'only', 'load', 'these', 'values']
});
var dbHost = nconf.get('database:host');
Мое другое предложение - рассмотреть менее странный модуль конфигурации. На нпм десятки. Просматривая проблемы nconf github, я вижу достаточно предупреждающих знаков о том, что этот модуль слишком много делает со слишком большим количеством опций. Конфигурация должна быть простой. Если это не так, уходи. Я предполагаю, что хотя это может быть уместно, если вы создаете PaaS, такой как nodejitsu, большинству приложений не требуется бесконечно глубокая иерархия конфигурации с дюжиной различных мест для проверки данных.