Uzantıları değerlendirmek için Uzantılar Emülatörü'nü kullanma

Extensions emülatörünü uygulamanızla kullanmadan önce Firebase Local Emulator Suite iş akışını genel olarak anladığınızdan, Local Emulator Suite'yi yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.

Bu kılavuzda, Firebase Extensions ve Firebase uygulamalarınızda bunları kullanma hakkında bilgi sahibi olduğunuz varsayılmaktadır.

Extensions emülatörüyle neler yapabilirim?

Extensions emülatörüyle uzantıları güvenli bir yerel ortamda yükleyip yönetebilir, faturalandırma maliyetlerini en aza indirirken uzantıların özelliklerini daha iyi anlayabilirsiniz. Emülatör, Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication ve Pub/Sub için emülatörleri kullanan arka planda etkinlik tetikleyici işlevler ve Cloud Functions v2'de uygulanan Eventarc tetikleyici işlevler dahil olmak üzere uzantınızın işlevlerini yerel olarak çalıştırır.

Firebase projesi seçme

Firebase Local Emulator Suite, tek bir Firebase projesinin ürünlerini taklit eder.

Kullanılacak projeyi seçmek için emülatörleri başlatmadan önce CLI'de çalışma dizininizde firebase use komutunu çalıştırın. Alternatif olarak, her emülatör komutuna --project işaretini de iletebilirsiniz.

Local Emulator Suite, gerçek Firebase projelerinin ve demo projelerinin emülasyonunu destekler.

Proje türü Özellikler Emülatörlerle kullanma
Gerçek

Gerçek Firebase projesi, oluşturduğunuz ve yapılandırdığınız (muhtemelen Firebase konsolu üzerinden) projedir.

Gerçek projelerde veritabanı örnekleri, depolama alanı paketleri, işlevler veya söz konusu Firebase projesi için oluşturduğunuz diğer kaynaklar gibi canlı kaynaklar bulunur.

Gerçek Firebase projeleriyle çalışırken desteklenen ürünlerin herhangi biri veya tümü için emülatör çalıştırabilirsiniz.

Emülasyon oluşturmadığınız ürünlerde uygulamalarınız ve kodunuz canlı kaynakla (veritabanı örneği, depolama alanı paketi, işlev vb.) etkileşim kurar.

Demo

Demo Firebase projelerinde gerçek Firebase yapılandırması ve canlı kaynak bulunmaz. Bu projelere genellikle codelab'ler veya diğer eğitici içerikler üzerinden erişilir.

Demo projelerin proje kimliklerinde demo- ön ek bulunur.

Demo Firebase projeleriyle çalışırken uygulamalarınız ve kodunuz yalnızca emülatörlerle etkileşim kurar. Uygulamanız, emülatörünün çalışmadığı bir kaynağa etkileşime geçmeye çalışırsa bu kod başarısız olur.

Mümkün olduğunda demo projeleri kullanmanızı öneririz. Sunulan avantajlar arasında şunlar sayılabilir:

  • Firebase projesi oluşturmadan emülatörleri çalıştırabileceğiniz için daha kolay kurulum
  • Kodunuz yanlışlıkla taklit edilmeyen (üretim) kaynakları çağırırsa veri değişikliği, kullanım ve faturalandırma olasılığı olmadığından daha güçlü güvenlik
  • SDK yapılandırmanızı indirmek için internete erişmeniz gerekmediğinden daha iyi çevrimdışı destek.

Uzantıyı yükleme ve değerlendirme

Bir uzantının ihtiyaçlarınızı karşılayıp karşılamadığını değerlendirmek için Extensions emülatörünü kullanmak çok kolaydır.

Aşağıdaki iş akışı tüm uzantıları kapsasa da E-posta Tetikle (firestore-send-email) uzantısıyla ilgilendiğinizi varsayalım. Yerel emülatörlerle çalıştırıldığında, Tetikleyici E-posta otomatik olarak Cloud Firestore ve Cloud Functions emülatörlerini kullanır.

Bir uzantıyı yerel olarak değerlendirmek için:

  1. Uzantı, yerel uzantı manifestine eklenmelidir. Uzantı manifesti, uzantı örneklerinin ve yapılandırmalarının bir listesidir.

    firebase ext:install --local firebase/firestore-send-email

    Yukarıdaki komutu çalıştırdığınızda firebase/firestore-send-email uzantısının en son sürümünü yapılandırmanız ve yapılandırmayı manifest dosyasına kaydetmeniz istenir ancak yapılandırma projenize dağıtılmaz. Bu konu hakkında daha fazla bilgi için Manifestlerle uzantı yapılandırmasını yönetme başlıklı makaleyi inceleyin.

  2. Local Emulator Suite'yi normalde yaptığınız gibi başlatın.

    firebase emulators:start

Ardından Local Emulator Suite, manifest'inizde listelenen firestore-send-email uzantı örneğini kullanarak söz konusu uzantının kaynak kodunu ~/.cache/firebase/extensions'ye indirir. Kaynaklar indirildikten sonra Local Emulator Suite başlar ve uzantının arka planda tetiklenen işlevlerinden herhangi birini tetikleyebilir, uygulamanızı Local Emulator Suite'e bağlayarak uygulamanızla entegrasyonunu test edebilirsiniz.

E-posta dokümanı koleksiyonuna veri eklemek ve Trigger Email uzantısı tarafından gerektiği gibi diğer arka uç kaynaklarını ayarlamak için Emulator Suite UI'ü kullanabilirsiniz.

Alternatif olarak, sürekli entegrasyon iş akışları gibi etkileşimli olmayan test ortamları için uzantıyı değerlendirmek üzere bir test komut dosyası yazabilirsiniz. Bu komut dosyası, diğer adımlar arasında gerekli Cloud Firestore verilerini doldurur ve işlevleri tetikler. Ardından, test komut dosyanızı yürütmek için Local Emulator Suite simgesini çağırırsınız:

firebase emulators:exec my-test.sh

Extensions emülatörüyle test yapmanın üretimden farkı

Extensions emülatörü, uzantıları üretim deneyimine yakın bir şekilde test etmenizi sağlar. Ancak üretim davranışından bazı farklılıklar vardır.

Cloud IAM

Firebase Emulator Suite, IAM ile ilgili herhangi bir çalışma davranışını kopyalamaya veya bu davranışa uymaya çalışmaz. Emülatörler, sağlanan Firebase Güvenlik Kuralları'na uyar. Ancak IAM'ın normalde kullanılacağı durumlarda (ör. Cloud Functions'ın çağıracağı hizmet hesabını ve dolayısıyla izinleri ayarlamak için) emülatör yapılandırılamaz ve doğrudan yerel bir komut dosyası çalıştırmaya benzer şekilde, geliştirici makinenizdeki herkese açık hesabı kullanır.

Tetikleme türü sınırlaması

Firebase Local Emulator Suite şu anda yalnızca HTTP isteğiyle tetiklenen işlevleri, uzantılar için Eventarc özel etkinlik tetikleyicilerini ve Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication ve Pub/Sub için arka planda etkinlikle tetiklenen işlevleri desteklemektedir. Diğer türde tetiklenen işlevler kullanan uzantıları değerlendirmek için uzantınızı bir test Firebase projesine yüklemeniz gerekir.

Sonrasında ne olacak?