应用如何运作
应用是由twenty-sdk 包中的 defineEntity() 函数声明的实体集合。 SDK 在构建时通过 AST 分析检测到这些声明,并生成一份清单——完整描述你的应用为工作区新增的内容。 这些函数会在构建时校验你的配置,并提供 IDE 自动补全和类型安全。
文件组织由你决定。 实体检测基于 AST——无论文件位于何处,SDK 都能找到
export default defineEntity(...) 的调用。 上述文件夹结构是一种约定,而非强制要求。实体类型
沙盒化
- 逻辑函数 在服务器上的独立 Node.js 进程中运行。 它们仅通过类型化 API 客户端访问数据,该客户端会以触发运行的人员或应用本身的身份执行操作。 请参阅调用使用谁的访问权限。
- 前端组件 在使用 Remote DOM 的 Web Worker 中运行——与主页面沙盒隔离,但渲染原生 DOM 元素(非 iframe)。 它们通过消息传递的宿主 API 与 Twenty 通信。
- 权限 在 API 层面强制执行。 系统会注入两个运行时令牌,二者均派生自通过
defineApplicationRole()声明的角色;只要运行由人员触发,默认令牌的权限范围就会进一步缩小为该触发人员可执行的操作。
应用生命周期
yarn twenty dev— 监视你的源文件,并将更改实时同步到已连接的 Twenty 服务器。 当模式发生变化时,会自动重新生成类型化的 API 客户端。yarn twenty dev:build— 编译 TypeScript,使用 esbuild 打包逻辑函数和前端组件,并生成清单。- 预/后安装和卸载钩子 — 在安装过程中或在卸载前立即运行的可选函数。 详见 安装钩子。
后续步骤
配置
应用标识、默认角色,以及安装和卸载钩子。
数据
对象、字段和双向关系。
逻辑
逻辑函数、技能、代理和 OAuth 连接。
布局
视图、导航、页面布局、前端组件。
操作
CLI、测试、远程、CI,以及发布你的应用。