Я использую node-config практически во всех своих проектах, и в большинстве случаев я сталкиваюсь с проблема синтаксического анализа логических и числовых значений, заданных как переменные среды.
E.g.
default.js
module.exports = {
myNumber = 10,
myBool = true
}
пользовательские-переменные-среды.js
module.exports = {
myNumber = "MY_NUMBER",
myBool = "MY_BOOL"
}
Теперь очевидная проблема заключается в том, что если я заменяю значения по умолчанию пользовательскими значениями, установленными в качестве переменных среды, они будут строковым значением, а не числом или логическим значением. Итак, теперь, чтобы убедиться в моем коде, что типы верны. Мне всегда нужно преобразовывать типы, а для логических значений использовать правильную библиотеку, например. yn. Проблема в том, что мне приходится выполнять это преобразование каждый раз, когда я использую config.get()
, например +config.get("myNumber")
или yn(config.get("myBool"))
.
Есть ли лучший и более элегантный способ сделать это?
Одно из решений, которое я вижу, - это добавить свойство типа к переменной среды, как это делается здесь с форматом. Это позволило бы сделать что-то вроде этого ...
пользовательские-переменные-среды.js
module.exports = {
myNumber = {
name: "MY_NUMBER",
type: "number"
},
myBool = {
name: "MY_BOOL",
type: "boolean"
}
}
node-config
будет обрабатывать преобразование типов, и нет необходимости делать это все время в коде при его получении. Конечно, потребуется реализовать соответствующий синтаксический анализатор для логических значений, но они уже существуют и могут быть использованы здесь.