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 suas 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. Pacotes importados são incorporados ao bundle, exceto aqueles listados abaixo. 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 internos do nó não estão disponíveis — apenas pacotes npm que funcionam em um ambiente de navegador. Note que a sandbox implementa um parcial DOM, para que um pacote possa ser construído de forma limpa e ainda falhar no tempo de execução; veja Limitação atual.
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.
Componentes de front-end também podem compartilhar dependências por meio de um bundle de dependências compartilhadas. Os pacotes listados no campo frontComponentSharedDependencies do package.json do app são compilados uma vez em um arquivo separado e carregados a partir dele em tempo de execução, em vez de serem incorporados em cada componente. Assim, um componente que importa apenas pacotes compartilhados praticamente não carrega código de dependência próprio.
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
~/.twenty/config.test.json) e sincronize o app antes da execução dos testes:
src/__tests__/global-setup.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:
Cada função retorna um objeto de resultado com
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 no tsconfig.json do seu app e informa quaisquer erros de tipo. Os apps criados pelo scaffold também incluem um script yarn typecheck que também cobre arquivos de teste (tsconfig.spec.json).
CI com GitHub Actions
O gerador de scaffold cria um workflow pronto para uso em.github/workflows/ci.yml. A cada push para main e a cada pull request, ele inicia um servidor Twenty efêmero no runner (por meio da action twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test) e então executa yarn lint, yarn typecheck, yarn test:unit e yarn test com TWENTY_API_URL / TWENTY_API_KEY apontando para esse servidor. Nenhum secret é necessário e você pode fixar a versão do servidor por meio da variável de ambiente TWENTY_VERSION no topo do workflow.
Consulte Publicação → CI/CD automatizado para um passo a passo completo dos três workflows criados pelo scaffold (ci.yml, o pipeline de deploy cd.yml e publish.yml para publicação no npm).