跳转到主要内容

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。在克隆现有应用后,运行:
kazzle link              # 将当前目录与你的 Space 的应用检出匹配
kazzle link --app=<id>   # 强制指定应用
kazzle unlink            # 删除链接文件
AI 可以通过线程中的 app { action: "link", appId } 修复缺失的链接。