xref: /expo/packages/@expo/cli/src/export/web/index.ts (revision 1a3a1db5)
153b4c0b0SEvan Bacon#!/usr/bin/env node
253b4c0b0SEvan Baconimport chalk from 'chalk';
353b4c0b0SEvan Bacon
453b4c0b0SEvan Baconimport { Command } from '../../../bin/cli';
553b4c0b0SEvan Baconimport { assertArgs, getProjectRoot, printHelp } from '../../utils/args';
653b4c0b0SEvan Baconimport { logCmdError } from '../../utils/errors';
753b4c0b0SEvan Bacon
853b4c0b0SEvan Baconexport const expoExportWeb: Command = async (argv) => {
953b4c0b0SEvan Bacon  const args = assertArgs(
1053b4c0b0SEvan Bacon    {
1153b4c0b0SEvan Bacon      // Types
1253b4c0b0SEvan Bacon      '--help': Boolean,
1353b4c0b0SEvan Bacon      '--clear': Boolean,
1453b4c0b0SEvan Bacon      '--dev': Boolean,
1553b4c0b0SEvan Bacon      // Aliases
1653b4c0b0SEvan Bacon      '-h': '--help',
1753b4c0b0SEvan Bacon      '-c': '--clear',
1853b4c0b0SEvan Bacon    },
1953b4c0b0SEvan Bacon    argv
2053b4c0b0SEvan Bacon  );
2153b4c0b0SEvan Bacon
2253b4c0b0SEvan Bacon  if (args['--help']) {
2353b4c0b0SEvan Bacon    printHelp(
2453b4c0b0SEvan Bacon      `Export the static files of the web app for hosting on a web server`,
2553b4c0b0SEvan Bacon      chalk`npx expo export:web {dim <dir>}`,
2653b4c0b0SEvan Bacon      [
2753b4c0b0SEvan Bacon        chalk`<dir>                         Directory of the Expo project. {dim Default: Current working directory}`,
2853b4c0b0SEvan Bacon        `--dev                         Bundle in development mode`,
2953b4c0b0SEvan Bacon        `-c, --clear                   Clear the bundler cache`,
3053b4c0b0SEvan Bacon        `-h, --help                    Usage info`,
3153b4c0b0SEvan Bacon      ].join('\n')
3253b4c0b0SEvan Bacon    );
3353b4c0b0SEvan Bacon  }
3453b4c0b0SEvan Bacon
3553b4c0b0SEvan Bacon  const projectRoot = getProjectRoot(args);
36*1a3a1db5SEvan Bacon  const { resolveOptionsAsync } = await import('./resolveOptions.js');
3753b4c0b0SEvan Bacon  const options = await resolveOptionsAsync(args).catch(logCmdError);
3853b4c0b0SEvan Bacon
39*1a3a1db5SEvan Bacon  const { exportWebAsync } = await import('./exportWebAsync.js');
4053b4c0b0SEvan Bacon  return exportWebAsync(projectRoot, options).catch(logCmdError);
4153b4c0b0SEvan Bacon};
42