Firebase Local Emulator Suite farklı cihazlar için yüklenip yapılandırılabilir ve test ortamları için özel çözümler oluşturabilirsiniz. Tek seferlik prototip oluşturma oturumlarından üretim ölçeğinde sürekli entegrasyon iş akışları.
Local Emulator Suite'i yükleyin
Emulator Suite'i yüklemeden önce şunlara ihtiyacınız vardır:
Emulator Suite'i yüklemek için:
- Firebase CLI'yı yükleyin.
Firebase CLI'ı henüz yüklemediyseniz
hemen yükleyin.
Emulator Suite'i kullanmak için CLI'ın 8.14.0 veya üzeri bir sürümüne sahip olmanız gerekir. Şunları yapabilirsiniz:
aşağıdaki komutu kullanarak hangi sürümü yüklediğinizi kontrol edin:
firebase --version
- Henüz yapmadıysanız mevcut çalışma dizinini başlatın.
bir Firebase projesi olarak kullanıyorsanız,
kullanılacak ürünler:
firebase init
- Emulator Suite'i kurun. Bu komut, aşağıdaki işlemleri yapmanızı sağlayacak bir yapılandırma sihirbazını başlatır:
istediğiniz emülatörleri seçmenize, ilgili emülatörü indirmenize
ikili program dosyalarını ve varsayılanlar uygun değilse emülatör bağlantı noktalarını ayarlayın.
firebase init emulators
Bir emülatör yüklendiğinde hiçbir güncelleme kontrolü gerçekleştirilmez ve Firebase CLI sürümünüz güncellenene kadar otomatik indirmeler gerçekleşir.
Emulator Suite'i yapılandırın
İsteğe bağlı olarak emülatörleri yapılandırabilirsiniz. ağ bağlantı noktaları ve Güvenlik'e giden yol
firebase.json
dosyasındaki kural tanımları:
firebase init emulators
komutunu çalıştırarak veya düzenleyerek emülatör bağlantı noktalarını değiştirin Manuel olarakfirebase.json
.firebase.json
öğesini düzenleyerek Güvenlik Kuralları tanımlarının yolunu değiştirin manuel olarak ekleyin.
Bu ayarları yapılandırmazsanız emülatörler, otomatik olarak varsayılan bağlantı noktaları ve Cloud Firestore, Realtime Database ve Cloud Storage for Firebase emülatörler açık veri güvenliği ile çalışır.
Komut | Açıklama |
---|---|
init emülatörleri | Bir emülatör başlatma sihirbazı başlatın. Yüklenecek emülatörleri belirleyin ve isteğe bağlı olarak emülatör bağlantı noktası ayarlarını belirtin. init emulators , hasarsızdır; varsayılanların kabul edilmesi, geçerli emülatör yapılandırmasını korur. |
Bağlantı noktası yapılandırması
Her emülatör, tercih edilen varsayılan ile makinenizdeki farklı bir bağlantı noktasına bağlanır değer.
Emülatör | Varsayılan Bağlantı Noktası |
---|---|
Authentication | 9099 |
Emulator Suite UI | 4.000 |
Cloud Functions | 5001 |
Eventarc | 9299 |
Realtime Database | 9000 |
Cloud Firestore | 8080 |
Cloud Storage for Firebase | 9199 |
Firebase Hosting | 5000 |
Pub/Sub | 8085 |
Proje kimliği yapılandırması
Emülatörleri çağırma şeklinize bağlı olarak, aynı öğenin birden fazla örneğini çalıştırabilirsiniz. Farklı Firebase proje kimlikleri veya birden fazla emülatör örneği kullanan bir emülatör açıklama ekleyin. Böyle durumlarda emülatör örnekleri ayrı bir ortamda kullanabilirsiniz.
Tüm emülatör için tek bir proje kimliği ayarlamak genellikle gibi Emulator Suite UI, farklı ürün emülatörleri ve belirli bir emülatörün çalıştırıldığı tüm ortamlarda doğru durumlarda işe yarar.
Local Emulator Suite, şurada birden fazla proje kimliği algıladığında uyarı verir:
ortamına uygun değil, ancak
firebase.json
cihazınızda false
için singleProjectMode
anahtarı.
Proje kimliği beyanlarında uyuşmazlık olup olmadığını kontrol edebilirsiniz:
- Komut satırındaki varsayılan proje. Proje kimliği varsayılan olarak
başlangıçta
firebase init
ile seçilen projeden alınır veyafirebase use
. Projelerin listesini görüntülemek (ve hangisinin seçildiğini görmek) içinfirebase projects:list
kullanın. - Kural birimi testleri. Proje kimliği genellikle Kurallara yapılan çağrılarda belirtilir
Birim Testi kitaplık yöntemleri
initializeTestEnvironment
veyainitializeTestApp
. - Komut satırı
--project
işareti. Firebase KSA'yı geçme--project
işareti, varsayılan projeyi geçersiz kılar. Değerin öğenin kimliği, birim testlerindeki ve uygulama başlatmadaki proje kimliğiyle eşleşir.
Seçtiğiniz platforma özel proje kimliği yapılandırmalarını da kontrol edin Apple platformlarınızı yapılandırdıktan sonra, Android ve web projeleri.
Güvenlik Kuralları yapılandırması
Emülatörler, Güvenlik Kuralları yapılandırmasını database
içinden alır.
firebase.json
içindeki firestore
ve storage
yapılandırma anahtarları.
{
// Existing firebase configuration ...
"database": {
"rules": "database.rules.json"
},
"firestore": {
"rules": "firestore.rules"
},
"storage": {
"rules": "storage.rules"
}
// ...
// Optional emulator configuration. Default
// values are used if absent.
"emulators": {
"singleProjectMode": false, // do not warn on detection of multiple project IDs
"firestore": {
"port": "8080"
},
"ui": {
"enabled": true, // Default is `true`
"port": 4000 // If unspecified, see CLI log for selected port
},
"auth": {
"port": "9099"
},
"pubsub": {
"port": "8085"
}
}
}
Java seçeneklerini belirtme
Realtime Database emülatörü, Cloud Firestore emülatörü ve
Cloud Storage for Firebase emülatörü, özelleştirilebilen Java'ya dayanır
JVM işaretleriyle birlikte JAVA_TOOL_OPTIONS
ortam değişkeni üzerinden gönderilir.
Örneğin, Java yığın alanıyla ilgili hatalarla karşılaşırsanız maksimum Java yığın boyutunu 4 GB'a yükseltin:
export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start
Birden fazla bayrak, boşlukla ayrılmış şekilde tırnak işaretleri içinde belirtilebilir. Örneğin:
JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g"
İşaretler yalnızca Java tabanlı
bileşenleri üzerinde herhangi bir etkisi yoktur ve
Firebase KSA, örneğin Emulator Suite UI.
Başlatma emülatörleri
Emülatörleri manuel olarak sonlandırılana kadar ya da belirtilen bir test komut dosyasının süresi ve ardından otomatik olarak kapatılır.
Komut | Açıklama | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
emülators:start | firebase.json bölgesinde yapılandırılan Firebase ürünleri için emülatörleri başlatın.
Emülatör işlemleri açıkça durdurulana kadar çalışmaya devam eder. Telefon etme
emulators:start , emülatörleri ~/.cache/firebase/emulators/ konumuna indirir.
yüklü değiller.
|
||||||||||||
emulators:exec scriptpath | Firebase ürünleri için emülatörleri başlattıktan sonra scriptpath konumunda komut dosyasını çalıştırın.
firebase.json içinde yapılandırıldı.
komut dosyasının çalışması tamamlandı.
|
firebase emulators:exec
yöntemi genellikle
sürekli entegrasyon iş akışlarıyla başlayalım.
Emülatör verilerini dışa ve içe aktarma
Authentication, Cloud Firestore, Realtime Database ve
Paylaşılabilir, ortak temel veri olarak kullanılacak Cloud Storage for Firebase emülatörleri
ayarlandı. Bu veri kümeleri, --import
işareti kullanılarak içe aktarılabilir.
'ne başvurun.
emülatörler:dışa aktarma export_directory |
Authentication, Cloud Firestore, Realtime Database veya Cloud Storage for Firebase emülatörü.
Verileri çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage for Firebase sitesinden dışa aktarın
emülatör örneğidir. Bu durumda, belirtilen
Emülatörlere, kapandığında verileri otomatik olarak dışa aktarmaları için komut verebilirsiniz.
Yukarıda açıklanan |
CI sisteminizle entegrasyon
Container mimarisine alınmış Emulator Suite görüntülerini çalıştırma
Emulator Suite'in container'larla yüklenmesi ve yapılandırılması oldukça basittir.
Dikkat edilmesi gereken birkaç sorun vardır:
JAR dosyaları
~/.cache/firebase/emulators/
itibarıyla yüklenir ve önbelleğe alınır.- CI önbellek yapılandırmanıza bağlı olarak bu yolu eklemek isteyebilirsiniz. tekrarlayan indirmeler.
Deponuzda bir
firebase.json
dosyası yoksa biremulators:start
veyaemulators:exec
komutu için komut satırı bağımsız değişkeni başlatılması gereken emülatörleri belirtin. Örneğin,--only functions,firestore
Yetkilendirme jetonu oluşturma (yalnızca barındırma emülatörü)
Sürekli entegrasyon iş akışlarınızda Firebase Hosting kullanılıyorsa
firebase emulators:exec
öğesini çalıştırmak için jeton kullanarak giriş yapması gerekir. İlgili içeriği oluşturmak için kullanılan
Diğer emülatörler giriş gerektirmez.
Jeton oluşturmak için yerel ortamınızda firebase login:ci
komutunu çalıştırın; bu işlem bir CI sisteminden yapılmamalıdır. Kimlik doğrulama talimatlarını uygulayın. Jeton derlemeler genelinde geçerli olacağından bu adımı proje başına yalnızca bir kez gerçekleştirmeniz gerekir. Jeton, şifre gibi ele alınmalıdır; bu bilgi gizli tutulur.
CI ortamınız şunlara izin veren ortam değişkenlerini belirtmenize olanak tanıyorsa:
derleme komut dosyalarında kullanılan bir ortam değişkeni oluşturun.
FIREBASE_TOKEN
(değer, erişim jetonu dizesidir). Firebase CLI
FIREBASE_TOKEN
ortam değişkenini ve
emülatörler düzgün başlatılır.
Son çare olarak, jetonu derleme komut dosyanıza ekleyebilirsiniz, ancak
güvenilmeyen tarafların erişimi olmadığından emin olun. Sabit kodlu bu
yaklaşımınız için --token "YOUR_TOKEN_STRING_HERE"
firebase emulators:exec
komutu.
Emulator Hub REST API'yi kullanma
Çalışan emülatörleri listeleme
Şu anda çalışan emülatörleri listelemek için /emulators
ürününe GET
isteği gönderin.
uç noktası bulunuyor.
curl localhost:4400/emulators
Sonuç, çalışan tüm emülatörleri ve bu emülatörleri listeleyen bir JSON nesnesi olacaktır. ana makine/bağlantı noktası yapılandırması, örneğin:
{
"hub":{
"name": "hub",
"host": "localhost",
"port": 4400
},
"functions": {
"name": "functions",
"host": "localhost",
"port": 5001
}
"firestore": {
"name": "firestore",
"host": "localhost",
"port": 8080
}
}
Arka Plan İşlevi Tetikleyicilerini Etkinleştirin / Devre Dışı Bırakın
Bazı durumlarda, yerel işlevi geçici olarak devre dışı bırakmanız
uzantı tetikleyicileri. Örneğin, menüdeki tüm verileri silmek isteyebilirsiniz.
onDelete
işlevlerini tetiklemeden Cloud Firestore emülatörü
Cloud Functions veya Extensions emülatörlerinde çalışıyor.
Yerel işlev tetikleyicilerini geçici olarak devre dışı bırakmak için şuraya bir PUT
isteği gönderin:
Emulator Hub'ın /functions/disableBackgroundTriggers
uç noktası.
curl -X PUT localhost:4400/functions/disableBackgroundTriggers
Sonuç, mevcut durumu ayrıntılı olarak gösteren bir JSON nesnesi olur.
{
"enabled": false
}
Devre dışı bırakılan yerel işlev tetikleyicilerini etkinleştirmek için bir PUT
gönderin
Emülatörün /functions/enableBackgroundTriggers
uç noktasına yönelik istek
Hub.
curl -X PUT localhost:4400/functions/enableBackgroundTriggers
Sonuç, mevcut durumu ayrıntılı olarak gösteren bir JSON nesnesi olur.
{
"enabled": true
}
Emulator SDK entegrasyonları
Bu bölümdeki tablolar, istemci tarafından desteklenen emülatörleri gösterir ve Yönetici SDK'leri. Gelecek, emülatör desteğinin planlandığı ancak henüz planlandığı anlamına gelir kullanılabilir.
İstemci SDK'sının kullanılabilirliği
Android | Apple platformları | Web |
Firebase kullanıcı arayüzü Android |
Firebase kullanıcı arayüzü iOS |
Firebase kullanıcı arayüzü Web |
|
---|---|---|---|---|---|---|
Realtime Database | 19.4.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
Cloud Firestore | 21.6.0 | 7.2.0 | 8.0.0 | 6.4.0 | Gelecek | Yok |
Authentication | 20.0.0 | 7.0.0 | 8.0.0 | 7.0.0 | Gelecek | 4.7.2 |
Cloud Storage for Firebase | 20.0.0 | 8.0.0 | 8.4.0 | 7.0.0 | 11.0.0 | Yok |
Cloud Functions | 19.1.0 | 7.2.0 | 8.0.0 | Yok | Yok | Yok |
Hosting | Yok | Yok | Yok | Yok | Yok | Yok |
Extensions | Yok | Yok | Yok | Yok | Yok | Yok |
Yönetici SDK'sinin kullanılabilirliği
Düğüm | Java | Python | Go | |
---|---|---|---|---|
Realtime Database | 8.6.0 | 6.10.0 | 2.18.0 | Gelecek |
Cloud Firestore | 8.0.0 | 6.10.0 | 3.0.0 | 1.0.0 |
Authentication | 9.3.0 | 7.2.0 | 5.0.0 | 4.2.0 |
Cloud Storage for Firebase | 9.8,0 | Gelecek | Gelecek | Gelecek |
Cloud Functions | Yok | Yok | Yok | Yok |
Hosting | Yok | Yok | Yok | Yok |
Extensions | Yok | Yok | Yok | Yok |