Catch up on everthing we announced at this year's Firebase Summit. Learn more

Local Emulator Suite'i kurun, yapılandırın ve entegre edin

Firebase Local Emulator Suite, tek seferlik prototip oluşturma oturumlarından üretim ölçeğinde sürekli entegrasyon iş akışlarına kadar farklı prototip ve test ortamları için kurulabilir ve yapılandırılabilir.

Yerel Emülatör Paketini Kurun

Emulator Suite'i kurmadan önce ihtiyacınız olacak:

  • Node.js sürüm 8.0 veya daha yüksektir.
  • Java sürüm 1.8 veya üstü.

Emulator Suite'i yüklemek için:

  1. Yükleme Firebase CLI . Zaten Firebase CLI yüklü yoksa, şimdi kurun . Emulator Suite'i kullanmak için CLI sürüm 8.14.0 veya üzeri gerekir. : Aşağıdaki komut kullanarak yüklediğiniz hangi sürümünü kontrol edebilirsiniz
    firebase --version
  2. : Henüz yapmadıysanız, kullanım hangi ürünlerin belirtmek için ekrandaki talimatları takip bir Firebase projesi olarak geçerli çalışma dizini başlatmak
    firebase init
  3. Emulator Suite'i kurun. Bu komut, ilgilendiğiniz öykünücüleri seçmenize, karşılık gelen öykünücü ikili dosyalarını indirmenize ve varsayılanlar uygun değilse öykünücü bağlantı noktalarını ayarlamanıza olanak tanıyan bir yapılandırma sihirbazını başlatır.
    firebase init emulators

Bir öykünücü yüklendikten sonra, siz Firebase CLI sürümünüzü güncelleyene kadar hiçbir güncelleme denetimi yapılmaz ve ek otomatik indirme gerçekleşmez.

Emulator Suite'i Yapılandır

İsteğe bağlı Güvenlik Kuralları tanımlara Emulators' ağ bağlantı noktalarını ve yolu yapılandırabilirsiniz firebase.json dosyası:

  • Çalıştırarak değiştir emülatörü portları firebase init emulators veya düzenleyerek firebase.json elle.
  • Düzenleyerek Güvenlik Kuralları tanımlarına yolunu değiştirin firebase.json elle.

Bu ayarları yapılandırmazsanız öykünücüler varsayılan bağlantı noktalarını dinler ve Cloud Firestore, Realtime Database ve Cloud Storage öykünücüleri açık veri güvenliği ile çalışır.

Emretmek Açıklama
başlangıç ​​emülatörleri Bir öykünücü başlatma sihirbazı başlatın. Kurulacak öykünücüleri belirleyin ve isteğe bağlı olarak öykünücü bağlantı noktası ayarlarını belirtin. init emulators tahribatsız; varsayılanları kabul etmek, mevcut öykünücü yapılandırmasını koruyacaktır.

Bağlantı noktası yapılandırması

Her öykünücü, tercih edilen bir varsayılan değerle makinenizdeki farklı bir bağlantı noktasına bağlanır.

öykünücü Varsayılan Bağlantı Noktası
kimlik doğrulama 9099
Emülatör Paketi Kullanıcı Arayüzü 4000
Bulut İşlevleri 5001
Gerçek Zamanlı Veritabanı 9000
Bulut Firestore 8080
Bulut depolama 9199
Firebase Barındırma 5000
Pub/Sub 8085

Güvenlik Kuralları yapılandırması

Emülatörlerle gelen Güvenlik Kuralları yapılandırma alacak database , firestore ve storage yapılandırma anahtarları firebase.json .

{
  // 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": {
    "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"
    }
  }
}

Emülatörleri başlat

Öykünücüleri manuel olarak sonlandırılana kadar çalıştırmaya veya belirlenmiş bir test komut dosyası süresince çalıştırmaya ve ardından otomatik olarak kapanmaya başlayabilirsiniz.

Emretmek Açıklama
öykünücüler:başlat Yapılandırılan Firebase ürünleri için Başlat emulatörleri firebase.json . Öykünücü işlemleri, açıkça durdurulana kadar çalışmaya devam edecektir. Arayan emulators:start için emülatörlerini indirecektir ~ / .cache / Firebase / emülatörlerle / onlar zaten yüklü değilse.
bayrak Açıklama
--only İsteğe bağlı. Hangi öykünücülerin başlayacağını sınırlayın. Bir veya daha fazla 'auth', 'veritabanı', 'firestore', 'işlevler', 'barındırma' veya 'pubsub' belirterek, emülatör adlarının virgülle ayrılmış bir listesini sağlayın.
--inspect-functions debug_port İsteğe bağlı. Belirtilen bağlantı noktasında (veya bağımsız değişken atlanmışsa varsayılan bağlantı noktası 9229'da) işlevlerin kesme noktasında hata ayıklamasını etkinleştirmek için Bulut İşlevleri öykünücüsü ile birlikte kullanın. Bu bayrak sağlandığında, Bulut İşlevleri öykünücüsünün, işlevlerin sıralı (FIFO) sırayla tek bir işlemde yürütüldüğü özel bir serileştirilmiş yürütme moduna geçtiğini unutmayın; Bu, işlev hata ayıklamasını basitleştirir, ancak davranış, buluttaki işlevlerin çok işlemli, paralel yürütülmesinden farklıdır.
--export-on-exit= İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. İçin tarif edildiği gibi kapatma, meydana gelen bir dizine ihracat verileri emülatörü (ler) talimat emulators:export komutu. İhracat rehberi bu bayrağıyla belirtilebilir: firebase emulators:start --export-on-exit=./saved-data . Eğer --import aynı üzere, ihracat yolu varsayılan kullanılır; örneğin: firebase emulators:start --import=./data-path --export-on-exit . Son olarak, istenirse farklı dizin yollarını geçmesi --import ve --export-on-exit bayrakları.
--import= import_directory İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. İthalat verileri kullanılarak kaydedilmiş --export-on-exit başlangıç seçeneğini veya emulators:export çalışan bir kimlik doğrulama, Bulut Firestore, Gerçek Zamanlı Veritabanı veya Bulut Depolama emülatör örneğine komutu. Halihazırda öykünücü belleğinde bulunan herhangi bir verinin üzerine yazılacaktır.
emülatörlerle: exec scriptpath Komut dosyasını çalıştırın scriptpath yapılandırılan Firebase ürünleri için emülatörlerine başladıktan sonra firebase.json . Emulator işlemleri, betiğin çalışması bittiğinde otomatik olarak duracaktır.
bayrak Açıklama
--only İsteğe bağlı. Hangi öykünücülerin başlayacağını sınırlayın. Bir veya daha fazla 'firestore', 'veritabanı', 'işlevler', 'barındırma' veya 'pubsub' belirterek, emülatör adlarının virgülle ayrılmış bir listesini sağlayın.
--inspect-functions debug_port İsteğe bağlı. Belirtilen bağlantı noktasında (veya bağımsız değişken atlanmışsa varsayılan bağlantı noktası 9229'da) işlevlerin kesme noktasında hata ayıklamasını etkinleştirmek için Bulut İşlevleri öykünücüsü ile birlikte kullanın. Bu bayrak sağlandığında, Bulut İşlevleri öykünücüsünün, işlevlerin sıralı (FIFO) sırayla tek bir işlemde yürütüldüğü özel bir serileştirilmiş yürütme moduna geçtiğini unutmayın; Bu, işlev hata ayıklamasını basitleştirir, ancak davranış, buluttaki işlevlerin çok işlemli, paralel yürütülmesinden farklıdır.
--export-on-exit= İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. İçin tarif edildiği gibi kapatma, meydana gelen bir dizine ihracat verileri emülatörü (ler) talimat emulators:export komutu. İhracat rehberi bu bayrağıyla belirtilebilir: firebase emulators:start --export-on-exit=./saved-data . Eğer --import aynı üzere, ihracat yolu varsayılan kullanılır; örneğin: firebase emulators:start --import=./data-path --export-on-exit . Son olarak, istenirse farklı dizin yollarını geçmesi --import ve --export-on-exit bayrakları.
--import= import_directory İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. İthalat verileri kullanılarak kaydedilmiş --export-on-exit başlangıç seçeneğini veya emulators:export çalışan bir kimlik doğrulama, Bulut Firestore, Gerçek Zamanlı Veritabanı veya Bulut Depolama emülatör örneğine komutu. Halihazırda öykünücü belleğinde bulunan tüm verilerin üzerine yazılacaktır.
--ui İsteğe bağlı. Yürütme sırasında Emulator kullanıcı arabirimini çalıştırın.

firebase emulators:exec yöntem, genel olarak sürekli bir entegrasyon iş akışları için daha uygun olur.

Emülatör verilerini dışa ve içe aktarma

Paylaşılabilir, ortak bir temel veri seti olarak kullanmak için Kimlik Doğrulama, Cloud Firestore, Realtime Database ve Cloud Storage öykünücülerinden verileri dışa aktarabilirsiniz. Bu veri setleri kullanılarak alınabilir --import yukarıda tarif edildiği gibi, bayrak.

emülatörlerle: İhracat export_directory

Doğrulama, Bulut Firestore, Gerçek Zamanlı Veri Tabanı veya Bulut Depolama emülatörü. Çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage öykünücü örneğinden verileri dışa aktarın. Belirtilen export_directory zaten mevcut değilse oluşturulacaktır. Belirtilen dizin mevcutsa, önceki dışa aktarma verilerinin üzerine yazılması gerektiğini onaylamanız istenecektir. Sen force bayrağını kullanarak bu istemi atlayabilirsiniz. İhracat rehberi veri bildirim dosyası içerir firebase-export-metadata.json .

Onlar kapatma kullanırken otomatik ihracat verilerine emülatörlerine talimat verebilirsiniz --export-on-exit yukarıda açıklanan bayrakları.

CI sisteminizle entegre edin

Kapsayıcılı Emulator Suite görüntülerini çalıştırma

Tipik bir CI kurulumunda kapsayıcılı Emulator Suite'in kurulumu ve konfigürasyonu basittir.

Dikkat edilmesi gereken birkaç sorun var:

  • JAR dosyalarının yüklü ve en önbelleğe ~/.cache/firebase/emulators/ .

    • Tekrarlanan indirmeleri önlemek için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
  • Eğer bir yoksa firebase.json senin depoda dosyayı, sen bir komut satırı argümanı eklemelisiniz emulators:start veya emulators:exec emülatörlerine başlatılmalıdır belirtmek için komut. Örneğin,
    --only functions,firestore .

Kimlik doğrulama belirteci oluşturun (yalnızca Barındırma öykünücüsü)

Sizin sürekli entegrasyon iş akışları Firebase Hosting güveniyor, o zaman çalıştırmak için bir belirteç kullanarak giriş yapmanız gerekecek firebase emulators:exec . Diğer öykünücüler oturum açmayı gerektirmez.

Bir jeton, çalıştırmak oluşturmak için firebase login:ci yerel çevre üzerindeki; bu bir CI sisteminden yapılmamalıdır. Kimlik doğrulaması için talimatları izleyin. Belirteç yapılar arasında geçerli olacağından, bu adımı proje başına yalnızca bir kez gerçekleştirmeniz gerekir. Belirteç bir parola gibi ele alınmalıdır; gizli tutulduğundan emin olun.

CI ortamı yapı komut kullanılabilir ortam değişkenleri belirtmek izin veriyorsa, basitçe adında bir ortam değişkeni oluşturmak FIREBASE_TOKEN değeri dize belirteci erişim olmak üzere. Firebase CLI otomatik bulacaktır FIREBASE_TOKEN ortam değişkeni ve öykünücüsünü düzgün başlayacaktır.

Son çare olarak, belirteci derleme komut dosyanıza dahil edebilirsiniz, ancak güvenilmeyen tarafların erişimi olmadığından emin olun. Bu kodlanmış bir yaklaşım için, ekleyebilir --token "YOUR_TOKEN_STRING_HERE" için firebase emulators:exec komutu.

Emulator Hub REST API'sini kullanın

Çalışan emülatörleri listeleyin

Çalışmakta emülatörler listelemek için bir göndermek GET isteği /emulators Emulator Hub son nokta.

curl localhost:4400/emulators

Sonuç, çalışan tüm öykünücüleri ve bunların ana bilgisayar/bağlantı noktası yapılandırmasını listeleyen bir JSON nesnesi olacaktır, ö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 İşlev Tetikleyicilerini Etkinleştir / Devre Dışı Bırak

Bazı durumlarda yerel işlev tetikleyicilerini geçici olarak devre dışı bırakmanız gerekecektir. Örneğin herhangi bir tetikleme olmadan Bulut Firestore emülatör tüm verileri silmek isteyebilirsiniz onDelete Bulut Fonksiyonlar emülatör çalışan fonksiyonlar.

Geçici olarak devre dışı yerel fonksiyon tetikleyiciler için, göndermek PUT isteği /functions/disableBackgroundTriggers Emulator Hub son nokta.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

Sonuç, mevcut durumu detaylandıran bir JSON nesnesi olacaktır.

{
  "enabled": false
}

Onlar devre dışı bırakılmış sonra yerel işlev tetikler etkinleştirmek için bir gönderme PUT isteği /functions/enableBackgroundTriggers Emulator Hub son nokta.

curl -X PUT localhost:4400/functions/enableBackgroundTriggers

Sonuç, mevcut durumu detaylandıran bir JSON nesnesi olacaktır.

{
  "enabled": true
}

Emülatör SDK entegrasyonları

Bu bölümdeki tablolar, istemci ve Yönetici SDK'ları tarafından hangi öykünücülerin desteklendiğini gösterir. Gelecek araçları emülatörü destek planlanan ancak henüz mevcut değildir.

İstemci SDK'sı kullanılabilirliği

Android Apple platformları Firebase kullanıcı arayüzü
Android
Firebase kullanıcı arayüzü
iOS
Firebase kullanıcı arayüzü
Gerçek Zamanlı Veritabanı 19.4.0 7.2.0 8.0.0 6.4.0 Gelecek Yok
Bulut Firestore 21.6.0 7.2.0 8.0.0 6.4.0 Gelecek Yok
kimlik doğrulama 20.0.0 7.0.0 8.0.0 7.0.0 Gelecek Gelecek
Bulut depolama 20.0.0 8.0.0 8.4.0 Yok Yok Yok
Bulut İşlevleri 19.1.0 7.2.0 8.0.0 Yok Yok Yok
Barındırma Yok Yok Yok Yok Yok Yok

Yönetici SDK'sı kullanılabilirliği

düğüm Java piton Gitmek
Gerçek Zamanlı Veritabanı 8.6.0 6.10.0 2.18.0 Gelecek
Bulut Firestore 8.0.0 6.10.0 3.0.0 1.0.0
kimlik doğrulama 9.3.0 Gelecek Gelecek Gelecek
Bulut depolama 9.8.0 Gelecek Gelecek Gelecek
Bulut İşlevleri Yok Yok Yok Yok
Barındırma Yok Yok Yok Yok