Genel varlıklar (public/ klasörü)
Uygulamanızın kökündeki public/ klasörü, statik dosyaları barındırır — görseller, simgeler, yazı tipleri veya uygulamanızın çalışma zamanında ihtiyaç duyduğu diğer varlıklar. Bu dosyalar derlemelere otomatik olarak dahil edilir, geliştirme modunda senkronize edilir ve sunucuya yüklenir.
public/ içine yerleştirilen dosyalar şunlardır:
- Herkese açık olarak erişilebilir — sunucuya senkronize edildikten sonra varlıklar genel bir URL’den sunulur. Onlara erişmek için kimlik doğrulama gerekmez.
- Ön uç bileşenlerinde kullanılabilir — React bileşenlerinizin içinde görseller, simgeler veya herhangi bir medyayı göstermek için varlık URL’lerini kullanın.
- Mantık işlevlerinde kullanılabilir — e-postalarda, API yanıtlarında veya herhangi bir sunucu tarafı mantıkta varlık URL’lerine referans verin.
- Pazar yeri üst verileri için kullanılır —
defineApplication()içindekilogoUrlvescreenshotsalanları bu klasördeki dosyalara referans verir (örn.public/logo.png). Bunlar, uygulamanız yayımlandığında pazar yerinde görüntülenir. - Geliştirme modunda otomatik senkronize edilir —
public/içinde bir dosya eklediğinizde, güncellediğinizde veya sildiğinizde otomatik olarak sunucuya senkronize edilir. Yeniden başlatma gerekmez. - Derlemelere dahil edilir —
yarn twenty build, tüm genel varlıkları dağıtım çıktısına paketler.
getPublicAssetUrl ile genel varlıklara erişme
twenty-sdk içindeki getPublicAssetUrl yardımcı işlevini kullanarak public/ dizininizdeki bir dosyanın tam URL’sini alın. Hem mantık işlevlerinde hem de ön uç bileşenlerinde çalışır.
Bir mantık işlevinde:
src/logic-functions/send-invoice.ts
src/front-components/company-card.tsx
path bağımsız değişkeni, uygulamanızın public/ klasörüne göre görelidir. Hem getPublicAssetUrl('logo.png') hem de getPublicAssetUrl('public/logo.png') aynı URL’ye çözümlenir — public/ öneki varsa otomatik olarak kaldırılır.
npm paketlerini kullanma
Uygulamanızda herhangi bir npm paketini yükleyip kullanabilirsiniz. Hem mantık işlevleri hem de ön uç bileşenleri, tüm bağımlılıkları çıktıya satır içi olarak ekleyen esbuild ile paketlenir — çalışma zamanındanode_modules gerekmez.
Bir paketi yükleme
src/logic-functions/fetch-data.ts
src/front-components/chart.tsx
Paketleme nasıl çalışır
Derleme adımı, her mantık işlevi ve her ön uç bileşeni için tek bir bağımsız dosya üretmek üzere esbuild kullanır. Tüm içe aktarılan paketler pakete satır içi eklenir. Mantık işlevleri, Node.js ortamında çalışır. Node yerleşik modülleri (fs, path, crypto, http vb.) kullanılabilir ve kurulmaları gerekmez.
Ön uç bileşenleri, bir Web Worker içinde çalışır. Node’un yerleşik modülleri kullanılamaz — yalnızca tarayıcı ortamında çalışan tarayıcı API’leri ve npm paketleri kullanılabilir.
Her iki ortamda da twenty-client-sdk/core ve twenty-client-sdk/metadata önceden sağlanmış modüller olarak mevcuttur — bunlar paketlenmez, ancak çalışma zamanında sunucu tarafından çözülür.
Uygulamanızı test etme
SDK, test kodundan uygulamanızı derlemenize, dağıtmanıza, yüklemenize ve kaldırmanıza olanak tanıyan programatik API’ler sağlar. Tiplenmiş API istemcileriyle birlikte Vitest kullanarak, uygulamanızın gerçek bir Twenty sunucusunda uçtan uca çalıştığını doğrulayan entegrasyon testleri yazabilirsiniz.Kurulum
İskelet aracıyla oluşturulan uygulama zaten Vitest’i içerir. Manuel kurulum yaparsanız, bağımlılıkları yükleyin:vitest.config.ts oluşturun:
vitest.config.ts
src/__tests__/setup-test.ts
Programatik SDK API’leri
twenty-sdk/cli alt yolu, test kodundan doğrudan çağırabileceğiniz fonksiyonları dışa aktarır:
| Fonksiyon | Açıklama |
|---|---|
appBuild | Uygulamayı derleyin ve isteğe bağlı olarak bir tarball paketleyin |
appDeploy | Bir tarball’ı sunucuya yükleyin |
appInstall | Uygulamayı etkin çalışma alanına yükleyin |
appUninstall | Uygulamayı etkin çalışma alanından kaldırın |
success: boolean ile birlikte data veya error içeren bir sonuç nesnesi döndürür.
Bir entegrasyon testi yazma
İşte uygulamayı derleyen, dağıtan ve yükleyen; ardından çalışma alanında göründüğünü doğrulayan tam bir örnek:src/__tests__/app-install.integration-test.ts
Testleri çalıştırma
Yerel Twenty sunucunuzun çalıştığından emin olun, ardından:Tip denetimi
Ayrıca testleri çalıştırmadan uygulamanızda tip denetimi çalıştırabilirsiniz:tsc --noEmit komutunu çalıştırır ve tüm tip hatalarını raporlar.
CLI başvurusu
dev, build, add ve typecheck dışında CLI, fonksiyonları çalıştırma, günlükleri görüntüleme ve uygulama kurulumlarını yönetme komutları sağlar.
Fonksiyonları çalıştırma (yarn twenty exec)
Bir mantık fonksiyonunu HTTP, cron veya veritabanı olayıyla tetiklemeden manuel olarak çalıştırın:
Fonksiyon günlüklerini görüntüleme (yarn twenty logs)
Uygulamanızın mantık fonksiyonlarının yürütme günlüklerini akış olarak alın:
Bu, Docker konteyner günlüklerini gösteren
yarn twenty server logs komutundan farklıdır. yarn twenty logs, uygulamanızın fonksiyon yürütme günlüklerini Twenty sunucusundan gösterir.Bir uygulamayı kaldırma (yarn twenty uninstall)
Uygulamanızı etkin çalışma alanından kaldırın:
Uzakları yönetme
Bir uzak, uygulamanızın bağlandığı Twenty sunucusudur. Kurulum sırasında iskelet oluşturucu sizin için otomatik olarak bir tane oluşturur. Dilediğiniz zaman daha fazla uzak ekleyebilir veya aralarında geçiş yapabilirsiniz.~/.twenty/config.json içinde saklanır.
GitHub Actions ile CI
İskelet oluşturucu,.github/workflows/ci.yml konumunda kullanıma hazır bir GitHub Actions iş akışı üretir. Entegrasyon testlerinizi main dalına yapılan her itmede ve çekme isteklerinde otomatik olarak çalıştırır.
İş akışı:
- Kodunuzu çalışma alanına alır
twentyhq/twenty/.github/actions/spawn-twenty-docker-imageeylemini kullanarak geçici bir Twenty sunucusu başlatıryarn install --immutableile bağımlılıkları kurar- Eylem çıktılarından enjekte edilen
TWENTY_API_URLveTWENTY_API_KEYileyarn testçalıştırır
.github/workflows/ci.yml
spawn-twenty-docker-image eylemi, koşucu içinde doğrudan geçici bir Twenty sunucusu başlatır ve bağlantı ayrıntılarını çıktı olarak verir. GITHUB_TOKEN gizli değişkeni GitHub tarafından otomatik olarak sağlanır.
latest yerine belirli bir Twenty sürümünü sabitlemek için iş akışının başındaki TWENTY_VERSION ortam değişkenini değiştirin.