Перейти к содержимому

Шаблон Expo

Шаблон устанавливает закреплённые версии Expo 57, React и React Native. Metro запускается без обращения к сети на порту 8081 и входит в готовое состояние песочницы.

mjs
import { Sandbox, Template, waitForURL } from "@abox-dev/sdk";

const templateName = process.env.TEMPLATE_NAME ?? "expo-app";
const template = Template({ fileContextPath: "." })
  .fromNodeImage("24-bookworm-slim")
  .setWorkdir("/home/user/app")
  .copy("package.json", "/home/user/app/package.json")
  .copy("App.js", "/home/user/app/App.js")
  .runCmd("npm install")
  .setEnvs({ CI: "1" })
  .setStartCmd(
    "npm run start -- --offline --port 8081",
    waitForURL("http://localhost:8081"),
  );

await Template.build(template, templateName, {
  cpuCount: 2,
  memoryMB: 2_048,
});

const sandbox = await Sandbox.create(templateName);
try {
  const response = await sandbox.commands.run(
    "curl --silent --head http://localhost:8081 | head -n 1",
  );
  console.log(response.stdout);
} finally {
  await sandbox.kill();
}

Положите package.json и App.js рядом с примером. Переменная CI задаётся на этапе сборки, потому что команда запуска выполняется именно в этот момент.

Этот шаблон готовит сервер Metro. Для Android, iOS или веб-приложения добавьте нужные зависимости и подключите соответствующий клиент Expo.