1import { loadMetroConfigAsync } from '../../start/server/metro/instantiateMetro'; 2import { importCliBuildBundleWithConfigFromProject } from '../../start/server/metro/resolveFromProject'; 3import { setNodeEnv } from '../../utils/nodeEnv'; 4import { Options } from './resolveOptions'; 5 6export async function exportEmbedAsync(projectRoot: string, options: Options) { 7 setNodeEnv(options.dev ? 'development' : 'production'); 8 9 const { config } = await loadMetroConfigAsync(projectRoot, { 10 maxWorkers: options.maxWorkers, 11 resetCache: options.resetCache, 12 config: options.config, 13 }); 14 15 const buildBundleWithConfig = importCliBuildBundleWithConfigFromProject(projectRoot); 16 17 // Import the internal `buildBundleWithConfig()` function from `react-native` for the purpose 18 // of exporting with `@expo/metro-config` and other defaults like a resolved project entry. 19 await buildBundleWithConfig( 20 options, 21 // @ts-expect-error: MetroConfig type mismatch. 22 config 23 ); 24} 25