정적 자산
정적 자산 디렉토리의 모든 파일은 번들에 포함되며, 워커에서는 `env.assets`로 제공합니다.
runlot.json의 assets가 가리키는 디렉토리에 있는 파일은 배포할 때 모두 업로드됩니다.
{ "name": "my-app", "main": "src/index.ts", "assets": "public" }워커에서 정적 자산 제공하기
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
if (url.pathname.startsWith("/static/")) {
return env.assets.fetch(
new Request(new URL(url.pathname.slice("/static".length), url), request),
);
}
return new Response("hello");
},
};경로는 자산 디렉토리를 기준으로 해석합니다. 위 예시에서 /static/logo.svg는 public/logo.svg 파일을 가리킵니다.
자산 파일을 자동으로 우선 처리하지 않습니다. 어떤 경로에서 자산을 제공할지는 워커 코드에서 명시적으로 정하세요. 이렇게 하면 /about처럼 자산 경로와 애플리케이션 라우트가 겹치는 문제를 피할 수 있습니다.
자산만 있는 배포
main 없이 assets만 지정하면, 모든 요청을 정적 자산으로 전달하는 진입점을 자동으로 만듭니다.
{ "name": "my-site", "assets": "dist" }같은 동작을 직접 구현하면 다음과 같습니다.
export default {
fetch(request, env) {
return env.assets.fetch(request);
},
};번들에 포함할 수 없는 항목
- 심볼릭 링크. 번들에는 실제 파일만 담깁니다.
- 프로젝트 루트 밖.
"assets": "../dist"는 거절됩니다. - 중복 항목. 같은 경로가 두 번 들어간 번들은 거절됩니다.
자산 디렉토리 안의 node_modules와 빌드 캐시도 모두 업로드됩니다. 번들 크기가 예상보다 크다면 먼저 이 파일들이 포함됐는지 확인하세요. 크기 제한은 번들 규칙에서 확인할 수 있습니다.