プロジェクト構成
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 のいずれか 1 つ以上を指定する必要があります。どちらもない場合、配信するワーカーのコードも静的アセットもありません。すべてのフィールドは 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詳しくは マイグレーション を参照してください。