动态修改配置文件的伪代码实现如下:
const config4code = /home/code/config/代码中的配置.js;
const config4env = /home/env/prod/config/生产环境的配置.js;
const config4cluster = /home/cluster/config/集群中的配置.js
global.config = Object.assign(config4code, config4env, config4cluster);
chokidar.watch('/home/code/config/代码中的配置.js').on('all', () => {
Object.assign(global.config, /home/code/config/代码中的配置.js)
});
...其他两个同理
如果我们直接去修改这三个文件,是能监听到变动并成功合并修改配置的。
但是在我们项目中,是使用mv
命令用新文件覆盖旧文件,而不是修改文件。这就导致第一次覆盖能监听成功,但是后续覆盖就不生效了。
解决方案是监听目录的变化,而不是监听单个文件
chokidar.watch('/home/code/config/代码中的配置.js').on('all', () => {
Object.assign(global.config, /home/code/config)
});
...其他两个同理