跳轉到主要內容

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
  • 同級元件 URL,例如 KAZZLE_APP_COMPONENT_SERVER_URL
  • Kazzle 執行時身分識別,例如應用程式 ID 和元件名稱

範例

{
  "scripts": {
    "dev": "kazzle run -- bun --watch server/index.ts",
    "start": "bun server/index.ts"
  }
}
dev 透過 kazzle 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              # 將目前目錄與您的 Space 的應用程式簽出相符
kazzle link --app=<id>   # 強制特定應用程式
kazzle unlink            # 刪除連結檔案
AI 可以使用 app { action: "link", appId } 從執行緒修復遺失的連結。