Uso dei pacchetti npm
Puoi installare e usare qualsiasi pacchetto npm nella tua app. Sia le funzioni logiche sia i componenti front-end vengono impacchettati con esbuild, che incorpora tutte le dipendenze nell’output — non sono necessari inode_modules a runtime.
Installazione di un pacchetto
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
Come funziona il bundling
La fase di build usa esbuild per produrre un singolo file autonomo per ogni funzione logica e per ogni componente front-end. Tutti i pacchetti importati sono incorporati nel bundle. Le funzioni logiche vengono eseguite in un ambiente Node.js. I moduli integrati di Node (fs, path, crypto, http, ecc.) sono disponibili e non necessitano di essere installati.
I componenti front-end vengono eseguiti in un Web Worker. I moduli integrati di Node non sono disponibili — solo le API del browser e i pacchetti npm che funzionano in un ambiente browser.
Entrambi gli ambienti hanno twenty-client-sdk/core e twenty-client-sdk/metadata disponibili come moduli preforniti — questi non vengono inclusi nel bundle ma vengono risolti a runtime dal server.
Impostazione
L’app generata tramite scaffolding include già Vitest. Se la configuri manualmente, installa le dipendenze:vitest.config.ts alla radice della tua app:
vitest.config.ts
src/__tests__/setup-test.ts
API programmatiche dell’SDK
Il sottopercorsotwenty-sdk/cli esporta funzioni che puoi chiamare direttamente dal codice di test:
| Funzione | Descrizione |
|---|---|
appBuild | Compila l’app e, opzionalmente, crea un tarball |
appDeploy | Carica un tarball sul server |
appInstall | Installa l’app nello spazio di lavoro attivo |
appUninstall | Disinstalla l’app dallo spazio di lavoro attivo |
success: boolean e data oppure error.
Scrivere un test di integrazione
Ecco un esempio completo che compila, distribuisce e installa l’app, quindi verifica che compaia nello spazio di lavoro:src/__tests__/app-install.integration-test.ts
Esecuzione dei test
Assicurati che il tuo server Twenty locale sia in esecuzione, quindi:Controllo dei tipi
Puoi anche eseguire il controllo dei tipi sulla tua app senza eseguire i test:tsc --noEmit e riporta eventuali errori di tipo.
CI con GitHub Actions
Lo strumento di scaffolding genera un workflow GitHub Actions pronto all’uso in.github/workflows/ci.yml. Esegue automaticamente i test di integrazione a ogni push su main e sulle pull request.
Il workflow:
- Esegue il checkout del tuo codice
- Avvia un server Twenty temporaneo utilizzando l’azione
twentyhq/twenty/.github/actions/spawn-twenty-docker-image - Installa le dipendenze con
yarn install --immutable - Esegue
yarn testconTWENTY_API_URLeTWENTY_API_KEYiniettati dagli output dell’azione
.github/workflows/ci.yml
spawn-twenty-docker-image avvia un server Twenty effimero direttamente nel runner e fornisce i dettagli di connessione. Il secret GITHUB_TOKEN è fornito automaticamente da GitHub.
Per fissare una versione specifica di Twenty invece di latest, modifica la variabile d’ambiente TWENTY_VERSION all’inizio del workflow.