メインコンテンツへスキップ

コンポーネント

コンポーネントはアプリの実行可能な部分です。各コンポーネントには、実行方法を決定するtypeがあります。

UIコンポーネント

UIコンポーネントはWebフロントエンド(React、Vue、Svelte、プレーンHTML、またはポートで提供される任意のフレームワーク)です。
{ name: 'Dashboard', type: 'ui', path: '.', runtime: { dev: 'bun run dev' } }
  • アプリあたり最大1つ — Kazzleはアプリごとに1つのプレビューURLを割り当てます
  • runtime.dev — devサーバーのコマンド(「プレビューを開始」で使用)
  • runtime.run — 本番ビルドを提供するコマンド
runtime.devが設定されていない場合、プレビューシステムはpackage.jsonからbun run devを実行します。

プロセスコンポーネント

プロセスコンポーネントはバックエンドサービス、ワーカー、またはスケジュール済みタスクです。
{ name: 'API', type: 'process', path: './server/index.ts' }

ライフサイクル: processMode

プロセスコンポーネントには2つのライフサイクルのいずれかがあります:
  • processMode: 'persistent'(デフォルト) — 長時間実行されるHTTPサーバー。トリガーは宣言されたpathで実行中のサーバーにPOSTされます。
  • processMode: 'triggered' — エントリスクリプトはトリガーごとにスポーンされて終了します。本番環境でアイドル状態のマシンはありません。

トリガー

スケジュールおよびWebhookトリガーはコンポーネント上で宣言されます。1つのコンポーネントは多くのトリガーを持つことができます。各トリガーにはname(コンポーネント内で一意)とkindがあります。
{
  name: 'events',
  type: 'process',
  path: './components/events/index.ts',
  processMode: 'persistent',
  triggers: [
    { name: 'cleanup', kind: 'schedule', schedule: '0 * * * *', path: '/cron/cleanup' },
    { name: 'stripe',  kind: 'webhook',                          path: '/webhook/stripe' },
  ],
}
pathprocessMode: 'persistent'に必須です。processMode: 'triggered'の場合は省略され、スクリプトは代わりに環境からTRIGGER_NAMEを読み取ります。 トリガーモデル、環境変数契約、およびHTTP認証ヘッダーの詳細については、オートメーションを参照してください。

ランタイムコマンド

フェーズ実行時期
devドラフトプレビュー中bun run devvitenext dev
run本番環境bun run startnode dist/server.js
ドラフトプレビューパッケージスクリプトはkazzle run -- <command>を使用できるため、Kazzleはローカルポートと兄弟コンポーネントURLを注入できます。本番プロセスコンポーネントは、デプロイが本番イメージでそのコマンドを実行するため、runtime.runに実際のコマンドを宣言する必要があります。