runlot
リファレンス

runlot.json

プロジェクトディレクトリに置く設定ファイルです。名前、エントリーポイント、アセットディレクトリ、および接続したサービスを記録します。

このページの基準ソースは web/apps/cli/src/config.ts および internal/bundle/bundle.go です。ドキュメントのビルド時にそのソースから内容を生成します。
runlot.json
{
  "name": "my-app",
  "org": "me",
  "main": "src/index.ts",
  "assets": "public",
  "database": true
}

フィールド

フィールド必須説明
namestringはいプロジェクト名です。デプロイ URL の最初のラベルとして使用されます。
orgstringいいえ組織の slug です。--org オプションを指定すると、この設定より優先されます。
mainstringいいえワーカーのエントリーポイントです。指定しない場合は静的アセットのみをデプロイします。
assetsstringいいえ静的アセットのディレクトリです。
notFound`"404""spa"`いいえ
compatibilityDatestringいいえworkerd の互換性日付です。形式は YYYY-MM-DD です。
databasebooleanいいえデータベースを使うという宣言です。runlot deploy が読み、なければ作ります。
storagebooleanいいえファイルストレージを使うという宣言です。runlot deploy が読み、なければ作ります。
emailbooleanいいえメールの送受信の宣言 (docs/email.md)
authbooleanいいえアプリケーションのユーザー認証を使うという宣言です。runlot deploy が読み、なければ有効にします。データベースも一緒に作ります。
framework"next"いいえフレームワークアダプターです。現在サポートしている値は next のみです。
triggers{ crons: string[] }いいえ定期実行です。crons に 5 フィールドの cron 式を UTC で書きます。詳しくは 定期実行 を参照してください。

name は必須です。mainassets のうち少なくとも一方を指定する必要があります。両方ない場合、提供するワーカーも静的アセットもありません。framework を指定したプロジェクトは例外で、ビルドの過程でエントリーポイントとアセットを生成します。

サービスを宣言するフィールド

databasestorageauth は宣言です。runlot deploy がこの値を読み、まだないサービスを作ります。wrangler 設定のバインディング宣言と同じ場所で、有効にするコマンドやダッシュボードのボタンは別にありません。作成は冪等なので、同じ宣言で何度デプロイしてもサービスは 1 つです。

宣言を消してもサービスは残ります。消すのは runlot pg deleterunlot storage deleterunlot auth delete で、確認を経ます。auth はデータベースが必要なので、"auth": true だけ書いてもデータベースを一緒に作ります。

各サービスはプロジェクトごとに 1 つだけ接続できるため、サービス名の代わりに true で宣言します。ワーカーからはそれぞれ env.dbenv.storageenv.auth でアクセスします。

バンドルマニフェスト

runlot deploy は、この設定ファイルをそのままアップロードしません。CLI はビルド結果を参照する別の runlot.json マニフェストをバンドル内に生成します。ユーザーが自分で書く必要はありませんが、以下の検証ルールが適用されます。

フィールド説明
mainバンドルに含まれるワーカーのエントリーモジュールです。ない場合は、静的アセットのみを提供するエントリーポイントが自動的に追加されます。
assetsバンドルに含まれるアセットディレクトリです。/ と拡張子の無いパスは index.html で応答し、Content-Type は拡張子から決めます。
notFound404(既定)または spaspa なら拡張子の無いパスを /index.html で応答します。
compatibilityDate形式は YYYY-MM-DD です。指定しない場合は 2024-09-23 を使用します。
compatibilityFlags許可リスト方式の互換性フラグです。現在使用できる値は nodejs_compat のみです。
modules追加モジュールの一覧です。wasm 型のみをサポートします。
frameworkフレームワークアダプターです。現在サポートしている値は next のみです。
triggers定期実行です。crons は 5 フィールドの cron 式(UTC)で、デプロイ時に解析し、誤ったものは拒否します。main が必要です。

compatibilityFlags は許可リスト方式です。どのマニフェストも、ユーザーコードにプロセス全体の制御権限を与えるフラグを有効化できてはならないためです。バンドルが Node の組み込みモジュールを import する場合は nodejs_compat が必要なため、CLI が自動的に設定します。

WASM は modules フィールドを通じてのみ含めることができます。workerd は、バンドル内部で new WebAssembly.Module(bytes) を呼び出してコンパイルする方式を許可していません。Prisma のクエリコンパイラはこの制約の影響を受けます。

バンドルの上限

項目上限
圧縮後のアップロードサイズ64 << 20
展開後の合計サイズ512 << 20
ファイル 1 つのサイズ64 << 20
ファイル数20_000

バンドルには通常のファイルのみを含めることができます。シンボリックリンク、プロジェクトルートの外を指すパス、重複したエントリはすべて拒否されます。

このページの目次