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

Next.js с Bun

Вариант использует образ oven/bun:1.3 и устанавливает те же закреплённые зависимости Next.js через Bun. Сервер разработки работает на порту 3000.

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

const templateName = process.env.TEMPLATE_NAME ?? "nextjs-bun-app";
const template = Template({ fileContextPath: "." })
  .fromBunImage("1.3")
  .setWorkdir("/home/user/app")
  .copy("package.json", "/home/user/app/package.json")
  .copy("app", "/home/user/app/app")
  .runCmd("bun install")
  .setStartCmd(
    "bun run dev --hostname 0.0.0.0",
    waitForURL("http://localhost:3000"),
  );

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

const sandbox = await Sandbox.create(templateName);
try {
  const page = await sandbox.commands.run(
    "curl --silent http://localhost:3000",
  );
  console.log(page.stdout);
} finally {
  await sandbox.kill();
}

Файлы package.json, app/layout.jsx и app/page.jsx находятся рядом с примером. После изменения зависимостей пересоберите шаблон; для обновления только страниц слой bun install останется прежним.