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 le loro 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. I pacchetti importati vengono incorporati nel bundle, ad eccezione di quelli elencati di seguito. 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 i pacchetti npm che funzionano in un ambiente browser. Nota che la sandbox implementa un DOM parziale, quindi un pacchetto può compilarsi correttamente e comunque fallire in fase di esecuzione; vedi Limitazioni attuali.
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.
I componenti front-end possono anche condividere dipendenze tramite un bundle di dipendenze condivise. I pacchetti elencati nel campo frontComponentSharedDependencies del package.json dell’app vengono compilati una sola volta in un file separato e caricati da lì a runtime invece di essere incorporati in ogni componente, quindi un componente che importa solo pacchetti condivisi contiene quasi nessun codice di dipendenza proprio.
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
~/.twenty/config.test.json) e sincronizzi l’app prima dell’esecuzione dei test:
src/__tests__/global-setup.ts
API programmatiche dell’SDK
Il sottopercorsotwenty-sdk/cli esporta funzioni che puoi chiamare direttamente dal codice di test:
Ogni funzione restituisce un oggetto risultato con
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 sul file tsconfig.json della tua app e riporta eventuali errori di tipo. Le app generate dallo scaffolder includono anche uno script yarn typecheck che copre anche i file di test (tsconfig.spec.json).
CI con GitHub Actions
Lo strumento di scaffolding genera un workflow pronto all’uso in.github/workflows/ci.yml. A ogni push su main e a ogni pull request, avvia un server Twenty effimero nel runner (tramite l’azione twentyhq/twenty/.github/actions/spawn-twenty-app-dev-test), quindi esegue yarn lint, yarn typecheck, yarn test:unit e yarn test con TWENTY_API_URL / TWENTY_API_KEY che puntano a quel server. Non sono necessari segreti e puoi fissare la versione del server tramite la variabile di ambiente TWENTY_VERSION all’inizio del workflow.
Vedi Pubblicazione → CI/CD automatizzato per una spiegazione completa dei tre workflow generati dallo scaffolder (ci.yml, la pipeline di deploy cd.yml e publish.yml per la pubblicazione su npm).