@eggjs/tegg-config
Version:
module config plugin for egg
44 lines • 3.69 kB
JavaScript
import path from 'node:path';
import { readFileSync } from 'node:fs';
import { ModuleConfigUtil } from '@eggjs/tegg-common-util';
import { importResolve } from '@eggjs/utils';
export class ModuleScanner {
baseDir;
readModuleOptions;
constructor(baseDir, readModuleOptions) {
this.baseDir = baseDir;
this.readModuleOptions = readModuleOptions;
}
/**
* - load module references from config or scan from baseDir
* - load framework module as optional module reference
*/
loadModuleReferences() {
const moduleReferences = ModuleConfigUtil.readModuleReference(this.baseDir, this.readModuleOptions || {});
// eslint-disable-next-line @typescript-eslint/no-var-requires
const appPkg = JSON.parse(readFileSync(path.join(this.baseDir, 'package.json'), 'utf-8'));
const framework = appPkg.egg?.framework;
if (!framework) {
return moduleReferences;
}
// eslint-disable-next-line @typescript-eslint/no-var-requires
const frameworkPkg = importResolve(`${framework}/package.json`, {
paths: [this.baseDir],
});
const frameworkDir = path.dirname(frameworkPkg);
const optionalModuleReferences = ModuleConfigUtil.readModuleReference(frameworkDir, this.readModuleOptions || {});
const result = [
...moduleReferences,
];
for (const optionalModuleReference of optionalModuleReferences) {
if (!result.some(t => t.path === optionalModuleReference.path)) {
result.push({
...optionalModuleReference,
optional: true,
});
}
}
return result;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9kdWxlU2Nhbm5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIk1vZHVsZVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBQzdCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUErQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFN0MsTUFBTSxPQUFPLGFBQWE7SUFDUCxPQUFPLENBQVM7SUFDaEIsaUJBQWlCLENBQTZCO0lBRS9ELFlBQVksT0FBZSxFQUFFLGlCQUE2QztRQUN4RSxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsaUJBQWlCLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILG9CQUFvQjtRQUNsQixNQUFNLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFHLDhEQUE4RDtRQUM5RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMxRixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztRQUN4QyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDZixPQUFPLGdCQUFnQixDQUFDO1FBQzFCLENBQUM7UUFDRCw4REFBOEQ7UUFDOUQsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLEdBQUcsU0FBUyxlQUFlLEVBQUU7WUFDOUQsS0FBSyxFQUFFLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBRTtTQUN4QixDQUFDLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE1BQU0sd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsbUJBQW1CLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNsSCxNQUFNLE1BQU0sR0FBRztZQUNiLEdBQUcsZ0JBQWdCO1NBQ3BCLENBQUM7UUFDRixLQUFLLE1BQU0sdUJBQXVCLElBQUksd0JBQXdCLEVBQUUsQ0FBQztZQUMvRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDL0QsTUFBTSxDQUFDLElBQUksQ0FBQztvQkFDVixHQUFHLHVCQUF1QjtvQkFDMUIsUUFBUSxFQUFFLElBQUk7aUJBQ2YsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YifQ==