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  require('@expo/env').load(projectRoot);
9
10  const { config } = await loadMetroConfigAsync(projectRoot, {
11    maxWorkers: options.maxWorkers,
12    resetCache: options.resetCache,
13    config: options.config,
14  });
15
16  const buildBundleWithConfig = importCliBuildBundleWithConfigFromProject(projectRoot);
17
18  // Import the internal `buildBundleWithConfig()` function from `react-native` for the purpose
19  // of exporting with `@expo/metro-config` and other defaults like a resolved project entry.
20  await buildBundleWithConfig(options, config);
21}
22