1import { getConfig } from '@expo/config'; 2 3import { Log } from '../log'; 4 5export async function typescript(projectRoot: string) { 6 const { TypeScriptProjectPrerequisite } = await import( 7 '../start/doctor/typescript/TypeScriptProjectPrerequisite.js' 8 ); 9 const { MetroBundlerDevServer } = await import('../start/server/metro/MetroBundlerDevServer.js'); 10 const { getPlatformBundlers } = await import('../start/server/platformBundlers.js'); 11 12 try { 13 await new TypeScriptProjectPrerequisite(projectRoot).bootstrapAsync(); 14 } catch (error: any) { 15 // Ensure the process doesn't fail if the TypeScript check fails. 16 // This could happen during the install. 17 Log.log(); 18 Log.exception(error); 19 return; 20 } 21 22 const { exp } = getConfig(projectRoot, { skipSDKVersionRequirement: true }); 23 await new MetroBundlerDevServer( 24 projectRoot, 25 getPlatformBundlers(exp), 26 true 27 ).startTypeScriptServices(); 28} 29