我正在将我的配置从另一个库迁移到node-config。
我有两个问题:
- 旧库用于
config.get('a:b');
获取一些值,但node-config
使用单个点作为分隔符:config.get('a.b');
.
有没有办法配置它来:
节省我的时间和重构我的代码?
- 有没有办法设置运行时值。例如
config.set('key', 'val');
?
我正在将我的配置从另一个库迁移到node-config。
我有两个问题:
config.get('a:b');
获取一些值,但node-config
使用单个点作为分隔符:config.get('a.b');
.有没有办法配置它来:
节省我的时间和重构我的代码?
config.set('key', 'val');
?通过以下方式完成:1. 包装node-config
一个新的 js 文件 2. 代理get
,has
和set
methods 方法
像这样的东西:
const config = require('config');
const inMemDict = {};
const toNewKey = key => {
return key && key.split(':').join('.');
};
const { get: origGet, has: origHas } = config;
config.get = function (key, ...args) {
key = toNewKey(key);
if(typeof inMemDict[key] !== 'undefined') {
return inMemDict[key];
}
return origGet.apply(config, [key, ...args]);
};
config.has = function (key, ...args) {
key = toNewKey(key);
if(typeof inMemDict[key] !== 'undefined') {
return inMemDict[key];
}
return origHas.apply(config, [key, ...args]);
};
config.set = function (key, val) {
if(!key) return;
inMemDict[toNewKey(key)] = val;
};
module.exports = config;