使用 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
~/.twenty/config.test.json),并在测试运行前同步应用:
src/__tests__/global-setup.ts
可编程的 SDK API
子路径twenty-sdk/cli 导出了可直接在测试代码中调用的函数:
每个函数都会返回一个结果对象,包含
success: boolean,以及 data 或 error 之一。
编写集成测试
下面是一个完整示例:构建、部署并安装该应用,然后验证它出现在工作区中: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 lint、yarn typecheck、yarn test:unit 和 yarn test,并将 TWENTY_API_URL / TWENTY_API_KEY 指向该服务器。 无需任何机密信息,你可以在工作流顶部通过 TWENTY_VERSION 环境变量固定服务器版本。
完整的三个脚手架工作流(ci.yml、cd.yml 部署流水线以及用于 npm 发布的 publish.yml)的详细演练说明,请参见 发布 → 自动化 CI/CD。