跳转到主要内容

组件

组件是你的应用的可执行部分。每个组件都有一个 type 来决定它如何运行。

UI 组件

UI 组件是一个网络前端 — React、Vue、Svelte、纯 HTML 或任何在端口上运行的框架。
{ name: 'Dashboard', type: 'ui', path: '.', runtime: { dev: 'bun run dev' } }
  • 每个应用最多 1 个 — Kazzle 为每个应用分配一个预览 URL
  • runtime.dev — 开发服务器命令(由”启动预览”使用)
  • runtime.run — 提供生产构建的命令
如果未设置 runtime.dev,预览系统会从你的 package.json 运行 bun run dev

流程组件

流程组件是后端服务、工作进程或定时任务。
{ name: 'API', type: 'process', path: './server/index.ts' }

生命周期:processMode

流程组件有两种生命周期之一:
  • processMode: 'persistent'(默认)— 长期运行的 HTTP 服务器。触发器被 POST 到声明的 path 处的运行服务器。
  • processMode: 'triggered' — 每个触发器都会生成入口脚本并退出。生产环境中没有空闲机器。

触发器

计划和 webhook 触发器在组件上声明。一个组件可以有多个触发器。每个触发器都有一个 name(在组件内唯一)和一个 kind
{
  name: 'events',
  type: 'process',
  path: './components/events/index.ts',
  processMode: 'persistent',
  triggers: [
    { name: 'cleanup', kind: 'schedule', schedule: '0 * * * *', path: '/cron/cleanup' },
    { name: 'stripe',  kind: 'webhook',                          path: '/webhook/stripe' },
  ],
}
对于 processMode: 'persistent'path 是必需的。对于 processMode: 'triggered',它被省略 — 脚本改为从环境中读取 TRIGGER_NAME 参见自动化了解完整的触发器模型、环境变量约定和 HTTP 身份验证头。

运行时命令

阶段何时运行示例
dev在草稿预览期间bun run devvitenext dev
run在生产环境中bun run startnode dist/server.js
草稿预览包脚本可以使用 kazzle run -- <command>,以便 Kazzle 可以注入本地端口和同级组件 URL。生产流程组件必须在 runtime.run 中声明真实命令,因为部署会在生产镜像中运行该命令。