프로젝트 구조
runlot.json 설정 파일, 워커 진입점, 정적 자산 디렉토리로 프로젝트를 구성합니다.
create-runlot은 다음과 같은 기본 프로젝트 구조를 만듭니다.
my-app/
runlot.json 프로젝트 설정
src/index.ts 워커 진입점
public/ 정적 자산
hello.txt
.gitignorerunlot.json
{
"name": "my-app",
"org": "me",
"main": "src/index.ts",
"assets": "public"
}name은 필수입니다. 또한 main 또는 assets 중 하나 이상을 지정해야 합니다. 둘 다 없으면 제공할 워커 코드나 정적 자산이 없습니다. 전체 필드는 runlot.json 참조에서 확인하세요.
"database": true, "storage": true, "auth": true는 선언입니다. runlot deploy가 이 값을 읽어 아직 없는 리소스를 만듭니다. 켜는 명령이나 대시보드 버튼은 따로 없고, 선언을 지워도 리소스는 남습니다. 지우는 것은 runlot pg delete 같은 명시적 명령입니다.
진입점
export default로 내보내는 객체에 fetch 메서드를 구현하세요. Cloudflare Workers를 사용해 보셨다면 익숙한 형식입니다.
export default {
async fetch(request: Request, env: Env): Promise<Response> {
return new Response("hello runlot");
},
};워커는 env를 통해 활성화된 기능에 접근합니다. 항상 env.assets를 사용할 수 있으며, 추가한 기능에 따라 env.db, env.storage, env.auth를 사용할 수 있습니다. 시크릿은 대문자 이름으로 제공되어 소문자 바인딩 이름과 충돌하지 않습니다.
정적 자산
assets가 가리키는 디렉토리의 모든 파일은 번들에 포함되며, 워커에서는 env.assets로 제공합니다.
if (url.pathname.startsWith("/static/")) {
return env.assets.fetch(
new Request(new URL(url.pathname.slice("/static".length), url), request),
);
}main 없이 assets만 지정하면 정적 사이트로 배포합니다. 이 경우 모든 요청을 정적 자산으로 전달하는 진입점을 자동으로 만듭니다.
번들에는 실제 파일만 포함합니다. 심볼릭 링크와 프로젝트 루트 밖을 가리키는 경로는 사용할 수 없습니다. 이러한 경로를 허용하면 노드의 의도하지 않은 파일이 제공될 수 있기 때문입니다.
마이그레이션 디렉토리
runlot pg migrate는 기본적으로 migrations/ 디렉토리의 파일을 적용합니다.
my-app/
migrations/
0001_init.sql
0002_posts.sql자세한 내용은 마이그레이션을 참고하세요.