Skip to content

Commit eba836b

Browse files
committed
fix(tegg-config): resolve framework module json packages locally
1 parent ac38700 commit eba836b

8 files changed

Lines changed: 65 additions & 3 deletions

File tree

tegg/plugin/config/src/lib/ModuleScanner.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,12 @@ export class ModuleScanner {
7676
return frameworkDirs;
7777
}
7878

79-
private readAndDeduplicateModuleReferences(baseDir: string): readonly ModuleReference[] {
79+
private readAndDeduplicateModuleReferences(baseDir: string, cwd?: string): readonly ModuleReference[] {
8080
return ModuleConfigUtil.deduplicateModules(
81-
ModuleConfigUtil.readModuleReference(baseDir, this.readModuleOptions || {}),
81+
ModuleConfigUtil.readModuleReference(baseDir, {
82+
...this.readModuleOptions,
83+
...(cwd ? { cwd } : {}),
84+
}),
8285
);
8386
}
8487

@@ -126,7 +129,7 @@ export class ModuleScanner {
126129
}
127130
debug('loadModuleReferences from frameworkDirs:%o', frameworkDirs);
128131
const optionalModuleReferences = frameworkDirs.flatMap((frameworkDir) =>
129-
this.readAndDeduplicateModuleReferences(frameworkDir),
132+
this.readAndDeduplicateModuleReferences(frameworkDir, frameworkDir),
130133
);
131134

132135
// Merge all module references and deduplicate

tegg/plugin/config/test/ModuleScanner.test.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,20 @@ describe('plugin/config/test/ModuleScanner.test.ts', () => {
6060
expect(warnings).toEqual([]);
6161
});
6262

63+
it('should resolve framework module.json package references from the framework directory', () => {
64+
const baseDir = getFixtures('framework-module-json/app');
65+
const refs = new ModuleScanner(baseDir, { cwd: baseDir }).loadModuleReferences();
66+
67+
expect(refs).toEqual([
68+
{
69+
name: 'frameworkConfigModule',
70+
package: 'framework-config-module',
71+
path: path.join(baseDir, 'node_modules/chair-framework/node_modules/framework-config-module'),
72+
optional: true,
73+
},
74+
]);
75+
});
76+
6377
it('should stop scanning when framework chain has a cycle', () => {
6478
const baseDir = getFixtures('framework-cycle/app');
6579
const refs = new ModuleScanner(baseDir, {}).loadModuleReferences();

tegg/plugin/config/test/fixtures/framework-module-json/app/node_modules/chair-framework/config/module.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tegg/plugin/config/test/fixtures/framework-module-json/app/node_modules/chair-framework/node_modules/framework-config-module/package.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tegg/plugin/config/test/fixtures/framework-module-json/app/node_modules/chair-framework/package.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tegg/plugin/config/test/fixtures/framework-module-json/app/node_modules/framework-config-module/package.json

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"name": "framework-module-json-app",
3+
"type": "module",
4+
"egg": {
5+
"framework": "chair-framework"
6+
}
7+
}

tegg/plugin/tegg/test/lib/EggModuleLoader.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ describe('test/lib/EggModuleLoader.test.ts', () => {
3535
path: '/virtual/disabled-plugin',
3636
optional: true,
3737
},
38+
{
39+
name: 'samePathDifferentPackage',
40+
package: 'module-package',
41+
path: '/virtual/same-path',
42+
optional: true,
43+
},
3844
];
3945
const app = {
4046
baseDir: '/virtual/app',
@@ -64,6 +70,11 @@ describe('test/lib/EggModuleLoader.test.ts', () => {
6470
package: 'disabled-plugin',
6571
path: '/virtual/disabled-plugin',
6672
},
73+
samePathDifferentPackage: {
74+
enable: true,
75+
package: 'plugin-package',
76+
path: '/virtual/same-path',
77+
},
6778
},
6879
} as any;
6980

@@ -79,6 +90,7 @@ describe('test/lib/EggModuleLoader.test.ts', () => {
7990
assert.equal(moduleReferences[0].optional, false);
8091
assert.equal(moduleReferences[1].optional, false);
8192
assert.equal(moduleReferences[2].optional, true);
93+
assert.equal(moduleReferences[3].optional, true);
8294
});
8395

8496
describe('has recursive dependency module', () => {

0 commit comments

Comments
 (0)