프레임워크
Hono 와 정적 사이트는 그대로 돌아갑니다. Next.js 는 @runlot/next 어댑터가 빌드를 맡습니다.
runlot 의 배포 원시 단위는 하나입니다 — 워커 하나와 자산 디렉토리 하나. 프레임워크는 그 위에 얹힙니다.
Hono
어댑터가 필요 없습니다. Hono 앱은 그 자체로 fetch 핸들러라 export default app 이면 끝입니다.
import { Hono } from "hono";
import { Pool } from "@runlot/pg";
const app = new Hono<{ Bindings: Env }>();
app.get("/posts", async (c) => {
const user = await c.env.auth.user(c.req.raw);
const db = new Pool({ db: c.env.db });
const { rows } = await db.query(
"select id, title from posts where owner = $1 limit 20",
[user?.id ?? null],
);
return c.json(rows);
});
export default app;{ "name": "my-app", "main": "src/index.ts", "assets": "public" }정적 사이트
main 없이 assets 만 적으면 정적 사이트입니다.
{ "name": "my-site", "assets": "dist" }빌드가 있는 정적 사이트(Vite·Astro·11ty 등)는 빌드한 뒤 그 출력 디렉토리를 assets 로 가리키면 됩니다.
npm run build
runlot deploy정적 사이트는 별도 제품이 아니라 자산만 있는 배포입니다. 호스팅 상품을 둘로 나누지 않는 것은 의도입니다 — 한쪽에서 시작한 앱이 서버 코드를 한 줄 넣는 순간 다른 상품으로 옮겨 타야 하는 구조를 만들지 않습니다.
Next.js
npm create runlot@latest 에서 next 템플릿을 고르면 아래 구성이 그대로 나옵니다. 실물 런타임 위의 검증은 진행 중이라 첫 배포에서 막히는 것이 있으면 알려 주세요.runlot.json 에 "framework": "next" 를 적으면 runlot deploy 가 next build 와 OpenNext 를 대신 돌립니다. main 과 assets 는 빌드가 만들므로 적지 않습니다. 프로젝트에는 next 와 @runlot/next 가 설치돼 있어야 합니다.
{ "name": "my-app", "framework": "next" }워커 코드에서는 요청 객체를 넘기지 않아도 되는 env 를 씁니다 — 어댑터가 요청을 대신 들고 있습니다.
import { env } from "@runlot/next";
import { Pool } from "@runlot/pg";
export default async function Page() {
const user = await env.auth.user();
const db = new Pool({ db: env.db });
const { rows } = await db.query("select id, title from posts limit 20");
return <main>{user?.email} · {rows.length}</main>;
}env 는 요청 안에서만 값이 있습니다. 모듈 최상단이나 빌드 시점 정적 렌더에서 읽으면 조용히 비어 있는 대신 오류를 냅니다.
ISR 과 태그 재검증은 각각 env.storage 와 env.db 위에서 돕니다 — runlot add pg storage 로 둘을 켜 두면 됩니다. 켜지 않으면 정적 자산 캐시로 떨어지고 배포 로그가 한 줄 알려 줍니다. 별도 설정 파일(wrangler.toml)은 생기지 않습니다. .open-next/ 와 .runlot-next/ 는 빌드 산출물이라 템플릿의 .gitignore 에 이미 들어 있습니다.
next/image 의 이미지 최적화는 지원 계획에 없습니다 — 이미지는 그대로 서빙됩니다.
Remix · SvelteKit · Nuxt
서버 어댑터가 필요한 프레임워크는 아직 지원하지 않습니다. 클라이언트 빌드만 내보내는 구성(SPA + 별도 API 워커)이라면 정적 사이트 방식으로 지금도 올릴 수 있습니다.