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

Kazzle CLI

Kazzle CLIを使用して、アプリコマンドを開発とプレビューで実行します:
kazzle run -- <command>
--の後のすべてが実際のコマンドです。Kazzleはランタイム環境を最初に注入します。 kazzle runは開発とプレビューのみです。devスクリプトに属し、startには決して属しません。本番環境では、デプロイされたランタイムがPORTHOST、シークレットを直接注入し、本番コマンドは素のコマンド(例:bun run index.ts)です。kazzle CLIはデプロイされたイメージにインストールされていないため、kazzle runを呼び出す本番コマンドはkazzle: command not foundでクラッシュします。

kazzle runが注入するもの

  • コンポーネントのkazzle.config.ts内のenvエントリからのシークレット
  • PORTHOST
  • KAZZLE_APP_COMPONENT_SERVER_URLのような兄弟コンポーネントURL
  • アプリIDとコンポーネント名などのKazzleランタイムアイデンティティ

{
  "scripts": {
    "dev": "kazzle run -- bun --watch server/index.ts",
    "start": "bun server/index.ts"
  }
}
devkazzle runを通じて実行されるため、Kazzleはプレビューポートとランタイム環境を注入できます。startは素のコマンドです — 本番環境はPORT/HOST/シークレットを自身で注入します。 package.jsonにシークレットコレクション名を入れないでください。kazzle.config.tsに入れてください。
components: [
  {
    name: 'server',
    type: 'process',
    path: './server/index.ts',
    env: { collection: 'my-app', environment: 'local' },
  },
]

チェックアウトをアプリにリンクする

kazzle runはこのディレクトリがどのアプリに属しているかを知る必要があります。解決順序:
  1. コマンドラインの--app=<appId>
  2. KAZZLE_APP_ID環境変数(Kazzleが監視対象コンポーネントを開始するときに自動的に設定)
  3. 現在のディレクトリから上へ向かって検索される.kazzle/link.json
これらのいずれも解決しない場合、kazzle runは以下で終了します:
Error: This directory is not linked to a Kazzle app. Run `kazzle link` to fix.
app { action: "create" }<checkout>/.kazzle/link.jsonを自動的に書き込みます — Vercelの.vercel/project.jsonのように。ファイルはクローンごとであり、gitignoreされています。既存のアプリの新しいgit cloneの後、以下を実行してください:
kazzle link              # 現在のディレクトリをスペースのアプリチェックアウトと照合
kazzle link --app=<id>   # 特定のアプリを強制
kazzle unlink            # リンクファイルを削除
AIはスレッドからapp { action: "link", appId }で失われたリンクを修復できます。