Перейти к основному содержанию

Kazzle CLI

Используйте Kazzle CLI для запуска команд приложения в разработке и предпросмотре:
kazzle run -- <command>
Всё после -- — это реальная команда. Kazzle сначала внедряет среду выполнения. kazzle run предназначен только для разработки и предпросмотра. Он должен быть в скрипте dev, никогда в start. В production развёрнутая среда выполнения внедряет PORT, HOST и секреты напрямую, а production-команда — это голая команда (например bun run index.ts). CLI kazzle не установлен в развёрнутых образах, поэтому production-команда, вызывающая kazzle run, падает с ошибкой kazzle: command not found.

Что внедряет kazzle run

  • секреты из записи env компонента в kazzle.config.ts
  • PORT и HOST
  • 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 — это голая команда; production внедряет PORT/HOST/секреты самостоятельно. Не помещайте названия коллекций секретов в package.json. Поместите их в kazzle.config.ts.
components: [
  {
    name: 'server',
    type: 'process',
    path: './server/index.ts',
    env: { collection: 'my-app', environment: 'local' },
  },
]

Связывание checkout с приложением

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/project.json у Vercel. Файл специфичен для каждого клона и добавлен в gitignore. После свежего git clone существующего приложения запустите:
kazzle link              # сопоставить текущую директорию с checkout'ами приложений вашего Space
kazzle link --app=<id>   # принудительно связать конкретное приложение
kazzle unlink            # удалить файл связи
ИИ может восстановить отсутствующую связь из thread с помощью app { action: "link", appId }.