runlot.json
プロジェクトディレクトリに置く設定ファイルです。名前、エントリーポイント、アセットディレクトリ、および接続したサービスを記録します。
web/apps/cli/src/config.ts および internal/bundle/bundle.go です。ドキュメントのビルド時にそのソースから内容を生成します。{
"name": "my-app",
"org": "me",
"main": "src/index.ts",
"assets": "public",
"database": true
}フィールド
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name | string | はい | プロジェクト名です。デプロイ URL の最初のラベルとして使用されます。 |
org | string | いいえ | 組織の slug です。--org オプションを指定すると、この設定より優先されます。 |
main | string | いいえ | ワーカーのエントリーポイントです。指定しない場合は静的アセットのみをデプロイします。 |
assets | string | いいえ | 静的アセットのディレクトリです。 |
notFound | `"404" | "spa"` | いいえ |
compatibilityDate | string | いいえ | workerd の互換性日付です。形式は YYYY-MM-DD です。 |
database | boolean | いいえ | データベースを使うという宣言です。runlot deploy が読み、なければ作ります。 |
storage | boolean | いいえ | ファイルストレージを使うという宣言です。runlot deploy が読み、なければ作ります。 |
email | boolean | いいえ | メールの送受信の宣言 (docs/email.md) |
auth | boolean | いいえ | アプリケーションのユーザー認証を使うという宣言です。runlot deploy が読み、なければ有効にします。データベースも一緒に作ります。 |
framework | "next" | いいえ | フレームワークアダプターです。現在サポートしている値は next のみです。 |
triggers | { crons: string[] } | いいえ | 定期実行です。crons に 5 フィールドの cron 式を UTC で書きます。詳しくは 定期実行 を参照してください。 |
name は必須です。main と assets のうち少なくとも一方を指定する必要があります。両方ない場合、提供するワーカーも静的アセットもありません。framework を指定したプロジェクトは例外で、ビルドの過程でエントリーポイントとアセットを生成します。
サービスを宣言するフィールド
database、storage、auth は宣言です。runlot deploy がこの値を読み、まだないサービスを作ります。wrangler 設定のバインディング宣言と同じ場所で、有効にするコマンドやダッシュボードのボタンは別にありません。作成は冪等なので、同じ宣言で何度デプロイしてもサービスは 1 つです。
宣言を消してもサービスは残ります。消すのは runlot pg delete、runlot storage delete、runlot auth delete で、確認を経ます。auth はデータベースが必要なので、"auth": true だけ書いてもデータベースを一緒に作ります。
各サービスはプロジェクトごとに 1 つだけ接続できるため、サービス名の代わりに true で宣言します。ワーカーからはそれぞれ env.db、env.storage、env.auth でアクセスします。
バンドルマニフェスト
runlot deploy は、この設定ファイルをそのままアップロードしません。CLI はビルド結果を参照する別の runlot.json マニフェストをバンドル内に生成します。ユーザーが自分で書く必要はありませんが、以下の検証ルールが適用されます。
| フィールド | 説明 |
|---|---|
main | バンドルに含まれるワーカーのエントリーモジュールです。ない場合は、静的アセットのみを提供するエントリーポイントが自動的に追加されます。 |
assets | バンドルに含まれるアセットディレクトリです。/ と拡張子の無いパスは index.html で応答し、Content-Type は拡張子から決めます。 |
notFound | 404(既定)または spa。spa なら拡張子の無いパスを /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 |
バンドルには通常のファイルのみを含めることができます。シンボリックリンク、プロジェクトルートの外を指すパス、重複したエントリはすべて拒否されます。