使用 npm 包
可以在应用中安装并使用任意 npm 包。 逻辑函数和前端组件都通过 esbuild 打包,所有依赖都会被内联到输出中——运行时不需要node_modules。
安装包
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
打包的工作原理
构建步骤使用 esbuild 为每个逻辑函数和每个前端组件生成一个自包含文件。 所有导入的包都会被内联到打包产物中。 逻辑函数 运行在 Node.js 环境中。 Node 内置模块(fs、path、crypto、http 等) 可用且无需安装。
前端组件 运行在 Web Worker 中。 Node 内置模块不可用——仅可使用浏览器 API 以及可在浏览器环境中运行的 npm 包。
两个环境都将 twenty-client-sdk/core 和 twenty-client-sdk/metadata 作为预置模块提供 — 这些模块不会被打包,而是在运行时由服务器解析。
设置
脚手架生成的应用已包含 Vitest。 如果你手动进行设置,请安装这些依赖:vitest.config.ts:
vitest.config.ts
src/__tests__/setup-test.ts
可编程的 SDK API
子路径twenty-sdk/cli 导出了可直接在测试代码中调用的函数:
| 函数 | 描述 |
|---|---|
appBuild | 构建应用,并可选地打包为 tar 包 |
appDeploy | 将 tar 包上传到服务器 |
appInstall | 在活动工作区安装该应用 |
appUninstall | 从活动工作区卸载该应用 |
success: boolean,以及 data 或 error 之一。
编写集成测试
下面是一个完整示例:构建、部署并安装该应用,然后验证它出现在工作区中:src/__tests__/app-install.integration-test.ts
运行测试
确保你的本地 Twenty 服务器正在运行,然后:类型检查
你也可以在不运行测试的情况下对应用进行类型检查:tsc --noEmit 并报告所有类型错误。
使用 GitHub Actions 进行 CI
脚手架工具会在.github/workflows/ci.yml 生成一个开箱即用的 GitHub Actions 工作流。 它会在每次向 main 推送以及拉取请求上自动运行你的集成测试。
工作流:
- 检出你的代码
- 使用
twentyhq/twenty/.github/actions/spawn-twenty-docker-image动作启动一个临时的 Twenty 服务器 - 使用
yarn install --immutable安装依赖 - 运行
yarn test,并从该动作的输出中注入TWENTY_API_URL和TWENTY_API_KEY
.github/workflows/ci.yml
spawn-twenty-docker-image 动作会在运行器中直接启动一个临时的 Twenty 服务器,并输出连接详情。 GitHub 会自动提供 GITHUB_TOKEN 机密。
若要固定为特定的 Twenty 版本而不是 latest,请在工作流顶部修改 TWENTY_VERSION 环境变量。