Zum Hauptinhalt springen

Kazzle CLI

Verwende die Kazzle CLI, um App-Befehle in Entwicklung und Vorschau auszuführen:
kazzle run -- <command>
Alles nach -- ist der eigentliche Befehl. Kazzle injiziert zuerst die Laufzeitumgebung. kazzle run ist nur für Entwicklung und Vorschau gedacht. Es gehört ins dev-Skript, niemals in start. In der Produktion injiziert die bereitgestellte Laufzeit PORT, HOST und Secrets direkt, und der Produktionsbefehl ist der reine Befehl (z. B. bun run index.ts). Die kazzle CLI ist nicht in bereitgestellten Images installiert, daher stürzt ein Produktionsbefehl, der kazzle run aufruft, mit kazzle: command not found ab.

Was kazzle run injiziert

  • Secrets aus dem env-Eintrag der Komponente in kazzle.config.ts
  • PORT und HOST
  • URLs von Geschwisterkomponenten wie KAZZLE_APP_COMPONENT_SERVER_URL
  • Kazzle-Laufzeitidentität wie App-ID und Komponentenname

Beispiel

{
  "scripts": {
    "dev": "kazzle run -- bun --watch server/index.ts",
    "start": "bun server/index.ts"
  }
}
dev läuft durch kazzle run, damit Kazzle den Vorschauport und die Laufzeitumgebung injizieren kann. start ist der reine Befehl — die Produktion injiziert PORT/HOST/Secrets selbst. Gib keine Namen von Secret-Sammlungen in package.json an. Gib sie in kazzle.config.ts an.
components: [
  {
    name: 'server',
    type: 'process',
    path: './server/index.ts',
    env: { collection: 'my-app', environment: 'local' },
  },
]

Einen Checkout mit einer App verknüpfen

kazzle run muss wissen, zu welcher App dieses Verzeichnis gehört. Auflösungsreihenfolge:
  1. --app=<appId> in der Befehlszeile
  2. KAZZLE_APP_ID Umgebungsvariable (wird automatisch gesetzt, wenn Kazzle eine überwachte Komponente startet)
  3. .kazzle/link.json vom aktuellen Verzeichnis aufwärts
Wenn keine dieser Optionen aufgelöst wird, beendet sich kazzle run mit:
Error: This directory is not linked to a Kazzle app. Run `kazzle link` to fix.
app { action: "create" } schreibt <checkout>/.kazzle/link.json automatisch — wie Vercels .vercel/project.json. Die Datei ist pro Klon und wird von git ignoriert. Nach einem frischen git clone einer vorhandenen App führe aus:
kazzle link              # gleiche das aktuelle Verzeichnis mit den App-Checkouts deines Space ab
kazzle link --app=<id>   # erzwinge eine bestimmte App
kazzle unlink            # lösche die Link-Datei
Die KI kann einen fehlenden Link aus einem Thread mit app { action: "link", appId } reparieren.