Usando pacotes npm
Você pode instalar e usar qualquer pacote npm no seu app. Tanto funções lógicas quanto componentes de front-end são empacotados com esbuild, que incorpora todas as dependências na saída — nenhumnode_modules é necessário em tempo de execução.
Instalando um pacote
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
Como o empacotamento funciona
A etapa de build usa o esbuild para produzir um único arquivo independente por função lógica e por componente de front-end. Todos os pacotes importados são incorporados ao bundle. Funções lógicas são executadas em um ambiente Node.js. Módulos nativos do Node (fs, path, crypto, http, etc.) estão disponíveis e não precisam ser instalados.
Componentes de front-end são executados em um Web Worker. Módulos nativos do Node não estão disponíveis — apenas APIs do navegador e pacotes npm que funcionam em um ambiente de navegador.
Ambos os ambientes têm twenty-client-sdk/core e twenty-client-sdk/metadata disponíveis como módulos pré-fornecidos — eles não são empacotados, mas resolvidos em tempo de execução pelo servidor.
Configuração
O aplicativo gerado pelo scaffolder já inclui o Vitest. Se você configurá-lo manualmente, instale as dependências:vitest.config.ts na raiz do seu aplicativo:
vitest.config.ts
src/__tests__/setup-test.ts
APIs programáticas do SDK
O subcaminhotwenty-sdk/cli exporta funções que você pode chamar diretamente a partir do código de teste:
| Função | Descrição |
|---|---|
appBuild | Compilar o aplicativo e, opcionalmente, empacotar um tarball |
appDeploy | Enviar um tarball para o servidor |
appInstall | Instalar o aplicativo no espaço de trabalho ativo |
appUninstall | Desinstalar o aplicativo do espaço de trabalho ativo |
success: boolean e data ou error.
Escrevendo um teste de integração
Aqui está um exemplo completo que compila, implanta e instala o aplicativo e, em seguida, verifica se ele aparece no espaço de trabalho:src/__tests__/app-install.integration-test.ts
Executando testes
Certifique-se de que seu servidor Twenty local esteja em execução e, em seguida:Verificação de tipos
Você também pode executar a verificação de tipos no seu aplicativo sem executar os testes:tsc --noEmit e informa quaisquer erros de tipo.
CI com GitHub Actions
O gerador de scaffold cria um workflow do GitHub Actions pronto para uso em.github/workflows/ci.yml. Ele executa seus testes de integração automaticamente a cada push para main e em pull requests.
O workflow:
- Faz checkout do seu código
- Inicializa um servidor Twenty temporário usando a ação
twentyhq/twenty/.github/actions/spawn-twenty-docker-image - Instala as dependências com
yarn install --immutable - Executa
yarn testcomTWENTY_API_URLeTWENTY_API_KEYinjetados a partir das saídas da ação
.github/workflows/ci.yml
spawn-twenty-docker-image inicia um servidor Twenty efêmero diretamente no runner e fornece os detalhes de conexão. O segredo GITHUB_TOKEN é fornecido automaticamente pelo GitHub.
Para fixar uma versão específica do Twenty em vez de latest, altere a variável de ambiente TWENTY_VERSION no topo do workflow.