MCPcopy
hub / github.com/midwayjs/midway / createLightApp

Function createLightApp

packages/mock/src/creator.ts:683–740  ·  view source on GitHub ↗
(
  baseDirOrOptions: string | MockBootstrapOptions,
  options: MockBootstrapOptions = {}
)

Source from the content-addressed store, hash-verified

681 * @param options
682 */
683export async function createLightApp(
684 baseDirOrOptions: string | MockBootstrapOptions,
685 options: MockBootstrapOptions = {}
686): Promise<IMidwayApplication> {
687 if (baseDirOrOptions && typeof baseDirOrOptions === 'object') {
688 options = baseDirOrOptions;
689 baseDirOrOptions = options.baseDir || '';
690 }
691
692 Framework()(LightFramework);
693 options.globalConfig = Object.assign(
694 {
695 midwayLogger: {
696 default: {
697 disableFile: true,
698 disableError: true,
699 },
700 },
701 },
702 options.globalConfig ?? {}
703 );
704
705 if (!options.moduleLoadType) {
706 const cwd = process.cwd();
707 const pkgJSON = await loadModule(join(cwd, 'package.json'), {
708 safeLoad: true,
709 enableCache: false,
710 });
711
712 options.moduleLoadType = pkgJSON?.type === 'module' ? 'esm' : 'commonjs';
713 }
714
715 const app = await createApp(baseDirOrOptions as string, {
716 ...options,
717 imports: [
718 await transformFrameworkToConfiguration(
719 LightFramework,
720 options.moduleLoadType
721 ),
722 ].concat(options?.imports),
723 });
724
725 const applicationManager = app
726 .getApplicationContext()
727 .get(MidwayApplicationManager);
728 const apps = applicationManager.getApplications();
729 if (apps.length === 1) {
730 return app;
731 } else {
732 // 如果有多个 app,则重置 main app
733 const frameworkService = app
734 .getApplicationContext()
735 .get(MidwayFrameworkService);
736 // 这里调整是因为 createLightApp 会自动加一个 framework
737 frameworkService.setMainApp(apps[0].getNamespace());
738 return frameworkService.getMainApp();
739 }
740}

Callers 15

index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
index.test.tsFile · 0.90
store.test.tsFile · 0.90

Calls 11

FrameworkFunction · 0.90
loadModuleFunction · 0.90
assignMethod · 0.80
getApplicationsMethod · 0.80
setMainAppMethod · 0.80
getMainAppMethod · 0.80
createAppFunction · 0.70
getMethod · 0.65
getApplicationContextMethod · 0.65
getNamespaceMethod · 0.65

Tested by 4

createAppFunction · 0.72
createClassAppFunction · 0.72
createFunctionalAppFunction · 0.72