From 85a66629c8bf6b2923c53b0292bb133bb6dd888f Mon Sep 17 00:00:00 2001 From: Szymon Dziedzic Date: Tue, 4 Feb 2025 13:11:46 +0100 Subject: [PATCH] [eas-cli] auto start dev client server at the end of eas build:dev (#2868) # Why Auto-start dev client server at the end of `eas build:dev` command # How Auto-start dev client server at the end of `eas build:dev` command # Test Plan Tested manually [Screen Recording 2025-02-04 at 13.00.38.mov (uploaded via Graphite) ](https://app.graphite.dev/media/video/9YRXgAETSTRMfjZ0IP35/fabf33a3-77e4-474f-a5fe-71725446769f.mov) --- packages/eas-cli/src/commands/build/dev.ts | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/eas-cli/src/commands/build/dev.ts b/packages/eas-cli/src/commands/build/dev.ts index 1b1dcec77a..f6eed3b6c1 100644 --- a/packages/eas-cli/src/commands/build/dev.ts +++ b/packages/eas-cli/src/commands/build/dev.ts @@ -1,6 +1,7 @@ import { Platform } from '@expo/eas-build-job'; import { BuildProfile, EasJsonAccessor } from '@expo/eas-json'; import { Errors, Flags } from '@oclif/core'; +import chalk from 'chalk'; import { createBuildProfileAsync, @@ -19,6 +20,7 @@ import Log from '../../log'; import { RequestedPlatform } from '../../platform'; import { resolveWorkflowAsync } from '../../project/workflow'; import { confirmAsync, promptAsync } from '../../prompts'; +import { expoCommandAsync } from '../../utils/expoCli'; import { createFingerprintAsync } from '../../utils/fingerprintCli'; import { ProfileData, getProfilesAsync } from '../../utils/profiles'; import { Client } from '../../vcs/vcs'; @@ -122,6 +124,7 @@ export default class BuildDev extends EasCommand { if (build.artifacts?.applicationArchiveUrl) { await downloadAndRunAsync(build); + await this.startDevServerAsync({ projectDir, platform }); return; } else { Log.warn('Artifacts for this build expired. New build will be started.'); @@ -169,6 +172,7 @@ export default class BuildDev extends EasCommand { downloadSimBuildAutoConfirm: true, envOverride: env, }); + await this.startDevServerAsync({ projectDir, platform }); } private async selectPlatformAsync(platform?: Platform): Promise { @@ -324,4 +328,24 @@ export default class BuildDev extends EasCommand { limit: 1, }); } + + private async startDevServerAsync({ + projectDir, + platform, + }: { + projectDir: string; + platform: Platform; + }): Promise { + Log.newLine(); + Log.log( + `Starting development server: ${chalk.dim( + `npx expo start --dev-client ${platform === Platform.IOS ? '--ios' : '--android'}` + )}` + ); + await expoCommandAsync(projectDir, [ + 'start', + '--dev-client', + platform === Platform.IOS ? '--ios' : '--android', + ]); + } }