Skip to main content
该 SDK 提供可编程的 API,使你可以在测试代码中构建、部署、安装和卸载你的应用。 结合 Vitest 和类型化 API 客户端,你可以编写集成测试,在真实的 Twenty 服务器上验证你的应用端到端运行是否正常。

使用 npm 包

可以在应用中安装并使用任意 npm 包。 逻辑函数和前端组件都通过 esbuild 打包,所有依赖都会被内联到输出中——运行时不需要 node_modules

安装包

然后在代码中导入它:
src/logic-functions/fetch-data.ts
前端组件同样适用:
src/front-components/chart.tsx

打包的工作原理

构建步骤使用 esbuild 为每个逻辑函数和每个前端组件生成一个自包含文件。 所有导入的包都会被内联到打包产物中。 逻辑函数 运行在 Node.js 环境中。 Node 内置模块(fspathcryptohttp 等) 可用且无需安装。 前端组件 运行在 Web Worker 中。 Node 内置模块不可用——仅可使用浏览器 API 以及可在浏览器环境中运行的 npm 包。 两个环境都将 twenty-client-sdk/coretwenty-client-sdk/metadata 作为预置模块提供 — 这些模块不会被打包,而是在运行时由服务器解析。

设置

脚手架生成的应用已包含 Vitest。 如果你手动进行设置,请安装这些依赖:
在应用根目录下创建一个 vitest.config.ts
vitest.config.ts
创建一个全局设置文件,用于验证服务器是否可访问,写入 SDK 的测试配置文件(~/.twenty/config.test.json),并在测试运行前同步应用:
src/__tests__/global-setup.ts

可编程的 SDK API

子路径 twenty-sdk/cli 导出了可直接在测试代码中调用的函数: 每个函数都会返回一个结果对象,包含 success: boolean,以及 dataerror 之一。

编写集成测试

下面是一个完整示例:构建、部署并安装该应用,然后验证它出现在工作区中:
src/__tests__/app-install.integration-test.ts

运行测试

确保你的本地 Twenty 服务器正在运行,然后:
或者在开发期间使用监听模式:

类型检查

你也可以在不运行测试的情况下对应用进行类型检查:
这会针对你的应用的 tsconfig.json 运行 tsc --noEmit,并报告所有类型错误。 脚手架生成的应用还会提供一个 yarn typecheck 脚本,它也会覆盖测试文件(tsconfig.spec.json)。

使用 GitHub Actions 进行 CI

脚手架工具会在 .github/workflows/ci.yml 生成一个开箱即用的工作流。 在每次向 main 推送代码以及每个拉取请求上,它都会在 runner 中启动一个临时的 Twenty 服务器(通过 twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test action),然后运行 yarn lintyarn typecheckyarn test:unityarn test,并将 TWENTY_API_URL / TWENTY_API_KEY 指向该服务器。 无需任何机密信息,你可以在工作流顶部通过 TWENTY_VERSION 环境变量固定服务器版本。 完整的三个脚手架工作流(ci.ymlcd.yml 部署流水线以及用于 npm 发布的 publish.yml)的详细演练说明,请参见 发布 → 自动化 CI/CD