Как я могу передать значение иерархической конфигурации в 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, большинству приложений не требуется бесконечно глубокая иерархия конфигурации с дюжиной различных мест для проверки данных.

Другие вопросы по тегам