Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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 üzeri.
  • Java JDK sürüm 11 veya üstü.

Emulator Suite'i yüklemek için:

  1. Firebase CLI'yi yükleyin. Firebase CLI'niz henüz kurulu değilse, şimdi kurun . Emulator Suite'i kullanmak için CLI sürüm 8.14.0 veya üzeri gerekir. Aşağıdaki komutu kullanarak hangi sürümü yüklediğinizi kontrol edebilirsiniz:
    firebase --version
  2. Henüz yapmadıysanız, hangi ürünlerin kullanılacağını belirlemek için ekrandaki komutları izleyerek geçerli çalışma dizinini bir Firebase projesi olarak başlatın:
    firebase init
  3. Emulator Suite'i kurun. Bu komut, ilgilendiğiniz öykünücüleri seçmenize, ilgili ö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

firebase.json dosyasında emülatörlerin ağ bağlantı noktalarını ve Güvenlik Kuralları tanımlarının yolunu isteğe bağlı olarak yapılandırabilirsiniz:

  • firebase init emulators çalıştırarak veya firebase.json manuel olarak düzenleyerek öykünücü bağlantı noktalarını değiştirin.
  • firebase.json manuel olarak düzenleyerek Güvenlik Kuralları tanımlarının yolunu değiştirin.

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 Tanım
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 yıkıcı değildir; 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
Eventarc 9299
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ı

Öykünücüler, firestore database , firebase.json deposu ve storage yapılandırma anahtarlarından Güvenlik Kuralları yapılandırmasını alacaktır.

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

Java seçeneklerini belirtme

Realtime Database öykünücüsü, Cloud Firestore öykünücüsü ve Cloud Storage öykünücüsünün bir kısmı, JAVA_TOOL_OPTIONS ortam değişkeni aracılığıyla JVM bayraklarıyla özelleştirilebilen Java'yı temel alır.

Örneğin, Java yığın alanıyla ilgili hatalarla karşılaşırsanız, maksimum Java yığın boyutunu 4 GB'a yükseltebilirsiniz:

export JAVA_TOOL_OPTIONS="-Xmx4g"
firebase emulators:start

JAVA_TOOL_OPTIONS="-Xms2g -Xmx4g" gibi, boşluklarla ayrılmış tırnak işaretleri içinde birden çok bayrak belirtilebilir. İşaretler yalnızca öykünücülerin Java tabanlı bileşenlerini etkiler ve Firebase CLI'nin Emulator Suite UI gibi diğer bölümleri üzerinde hiçbir etkisi yoktur.

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 Tanım
öykünücüler:başlat firebase.json'da yapılandırılan firebase.json ürünleri için emülatörleri başlatın. Emülatör işlemleri, açıkça durdurulana kadar çalışmaya devam edecektir. Emulators emulators:start henüz kurulu değilse ~/.cache/firebase/emulators/ dizinine indirecektir.
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. emulators:export komutu için açıklandığı gibi, kapatma gerçekleştiğinde öykünücülere verileri bir dizine aktarmalarını söyleyin. Dışa aktarma dizini şu işaretle belirtilebilir: firebase emulators:start --export-on-exit=./saved-data . --import kullanılırsa, dışa aktarma yolu varsayılan olarak aynıdır; örneğin: firebase emulators:start --import=./data-path --export-on-exit . Son olarak, istenirse, --import ve --export-on-exit bayraklarına farklı dizin yolları iletin.
--import --import= import_directory İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. --export-on-exit başlatma seçeneği veya emulators:export komutu kullanılarak kaydedilen verileri çalışan bir Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücü örneğine içe aktarın. Halihazırda öykünücü belleğinde bulunan herhangi bir verinin üzerine yazılacaktır.
öykünücüler:exec scriptpath firebase.json scriptpath için öykünücüleri başlattıktan sonra komut dosyasını komut dosyası yolunda çalıştırın. 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. emulators:export komutu için açıklandığı gibi, kapatma gerçekleştiğinde öykünücülere verileri bir dizine aktarmalarını söyleyin. Dışa aktarma dizini şu işaretle belirtilebilir: firebase emulators:start --export-on-exit=./saved-data . --import kullanılırsa, dışa aktarma yolu varsayılan olarak aynıdır; örneğin: firebase emulators:start --import=./data-path --export-on-exit . Son olarak, istenirse, --import ve --export-on-exit bayraklarına farklı dizin yolları iletin.
--import --import= import_directory İsteğe bağlı. Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü ile kullanın. --export-on-exit başlatma seçeneği veya emulators:export komutu kullanılarak kaydedilen verileri çalışan bir Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücü örneğine içe aktarın. 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öntemi genellikle sürekli entegrasyon iş akışları için daha uygundur.

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 kümeleri, yukarıda açıklandığı gibi --import bayrağı kullanılarak içe aktarılabilir.

öykünücüler:dışa aktarma dışa export_directory

Kimlik doğrulama, Cloud Firestore, Realtime Database veya Cloud Storage öykünücüsü . Ç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. --force bayrağını kullanarak bu istemi atlayabilirsiniz. Dışa aktarma dizini, firebase-export-metadata.json adlı bir veri bildirim dosyası içerir.

Öykünücülere, yukarıda açıklanan --export-on-exit bayraklarını kullanarak kapandıklarında verileri otomatik olarak dışa aktarma talimatı verebilirsiniz.

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ı ~/.cache/firebase/emulators/ kurulur ve önbelleğe alınır.

    • Tekrarlanan indirmeleri önlemek için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
  • Deponuzda bir firebase.json dosyanız yoksa, hangi öykünücülerin başlatılması gerektiğini belirtmek için emulators:start veya emulators:exec komutuna bir komut satırı argümanı eklemelisiniz. Örneğin,
    --only functions,firestore .

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

Sürekli entegrasyon iş akışlarınız Firebase Hosting'e dayanıyorsa, firebase emulators:exec çalıştırmak için bir belirteç kullanarak oturum açmanız gerekir. Diğer öykünücüler oturum açmayı gerektirmez.

Bir belirteç oluşturmak için yerel ortamınızda firebase login:ci çalıştırın; 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ınız, derleme komut dosyalarında kullanılabilecek ortam değişkenlerini belirlemenize izin veriyorsa, değeri erişim belirteci dizesi olan FIREBASE_TOKEN adlı bir ortam değişkeni oluşturmanız yeterlidir. Firebase CLI, FIREBASE_TOKEN ortam değişkenini otomatik olarak alacak ve öykünücüler düzgün şekilde 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 sabit kodlanmış yaklaşım için firebase emulators:exec komutuna --token "YOUR_TOKEN_STRING_HERE" ekleyebilirsiniz.

Emulator Hub REST API'sini kullanın

Çalışan emülatörleri listeleyin

Şu anda çalışan emülatörleri listelemek için Emulator Hub'ın /emulators uç noktasına bir GET isteği gönderin.

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şlevi ve uzantı tetikleyicilerini geçici olarak devre dışı bırakmanız gerekecektir. Örneğin, Cloud Functions veya Extensions öykünücülerinde çalışan herhangi bir onDelete işlevini tetiklemeden Cloud Firestore öykünücüsündeki tüm verileri silmek isteyebilirsiniz.

Yerel işlev tetikleyicilerini geçici olarak devre dışı bırakmak için Emulator Hub'ın /functions/disableBackgroundTriggers uç noktasına bir PUT isteği gönderin.

curl -X PUT localhost:4400/functions/disableBackgroundTriggers

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

{
  "enabled": false
}

Yerel işlev tetikleyicilerini devre dışı bırakıldıktan sonra etkinleştirmek için Emulator Hub'ın /functions/enableBackgroundTriggers uç noktasına bir PUT isteği gönderin.

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 , emülatör desteğinin planlandığı ancak henüz mevcut olmadığı anlamına gelir.

İ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
Uzantılar 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 7.2.0 5.0.0 4.2.0
Bulut depolama 9.8.0 Gelecek Gelecek Gelecek
Bulut İşlevleri Yok Yok Yok Yok
Barındırma Yok Yok Yok Yok
Uzantılar Yok Yok Yok Yok