diff --git a/plugin/tegg/lib/ModuleConfigLoader.ts b/plugin/tegg/lib/ModuleConfigLoader.ts index 429390a5..a17b7c8a 100644 --- a/plugin/tegg/lib/ModuleConfigLoader.ts +++ b/plugin/tegg/lib/ModuleConfigLoader.ts @@ -49,7 +49,8 @@ export class ModuleConfigLoader { const moduleConfigMap: Record = {}; for (const reference of this.app.moduleReferences) { const moduleName = ModuleConfigUtil.readModuleNameSync(reference.path); - const config = ModuleConfigUtil.loadModuleConfigSync(reference.path, undefined, this.app.config.env) || {}; + // first read @eggjs/tegg-config moduleConfigs + const config = this.app.moduleConfigs[moduleName].config || ModuleConfigUtil.loadModuleConfigSync(reference.path, undefined, this.app.config.env) || {}; moduleConfigMap[moduleName] = { name: moduleName, reference: { diff --git a/plugin/tegg/test/ModuleConfig.test.ts b/plugin/tegg/test/ModuleConfig.test.ts index 7af549cf..d9a8c100 100644 --- a/plugin/tegg/test/ModuleConfig.test.ts +++ b/plugin/tegg/test/ModuleConfig.test.ts @@ -37,4 +37,18 @@ describe('test/ModuleConfig.test.ts', () => { }); }); }); + + it('should work with overwrite', async () => { + mm(app.moduleConfigs.simple.config, 'features', { dynamic: { foo: 'bar', bar: 'overwrite foo' } }); + + await app.httpRequest() + .get('/config') + .expect(200) + .expect(res => { + assert.deepStrictEqual(res.body, { + moduleConfigs: { features: { dynamic: { foo: 'bar', bar: 'overwrite foo' } } }, + moduleConfig: { features: { dynamic: { foo: 'bar', bar: 'overwrite foo' } } }, + }); + }); + }); });