diff --git a/src/configs/emulator.config.ts b/src/configs/emulator.config.ts index 7c7d77d..13f3c6c 100644 --- a/src/configs/emulator.config.ts +++ b/src/configs/emulator.config.ts @@ -1,4 +1,4 @@ -import {type EmulatorConfig, EmulatorConfigSchema} from '@junobuild/config'; +import {type EmulatorConfig, type EmulatorRunner, EmulatorConfigSchema} from '@junobuild/config'; import {red} from 'kleur'; import * as z from 'zod'; import {DEPLOY_LOCAL_REPLICA_PATH} from '../constants/dev.constants'; @@ -40,6 +40,11 @@ export const readEmulatorConfig = async (): Promise< const targetDeploy = config.runner?.target ?? DEPLOY_LOCAL_REPLICA_PATH; + const extraHosts = (config.runner?.extraHosts ?? []).map( + ([hostname, destination]: NonNullable[number]) => + `${hostname}:${destination}` + ); + return { success: true, config: { @@ -48,7 +53,8 @@ export const readEmulatorConfig = async (): Promise< containerName, emulatorType, runner, - targetDeploy + targetDeploy, + extraHosts } } }; diff --git a/src/services/emulator/_runner.services.ts b/src/services/emulator/_runner.services.ts index 002c046..1ae67a5 100644 --- a/src/services/emulator/_runner.services.ts +++ b/src/services/emulator/_runner.services.ts @@ -151,7 +151,7 @@ const initConfigFile = async () => { const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfig}) => { const { config, - derivedConfig: {emulatorType, containerName, runner, targetDeploy} + derivedConfig: {emulatorType, containerName, runner, targetDeploy, extraHosts} } = extendedConfig; const {running} = await assertContainerRunning({containerName, runner}); @@ -249,6 +249,7 @@ const startEmulator = async ({config: extendedConfig}: {config: CliEmulatorConfi '-v', `${targetDeploy}:/juno/target/deploy`, ...(nonNullish(platform) ? [`--platform=${platform}`] : []), + ...extraHosts.flatMap((host) => ['--add-host', host]), image ] }); diff --git a/src/types/emulator.ts b/src/types/emulator.ts index 18963ff..00741d5 100644 --- a/src/types/emulator.ts +++ b/src/types/emulator.ts @@ -11,6 +11,7 @@ export interface CliEmulatorDerivedConfig { runner: EmulatorRunnerType; emulatorType: EmulatorType; targetDeploy: string; + extraHosts: string[]; } export interface CliEmulatorConfig {