Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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'yi henüz yüklemediyseniz, ş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 for Firebase ö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
Firebase için Bulut Depolama 9199
Firebase Barındırma 5000
Pub/Sub 8085

Proje kimliği yapılandırması

Öykünücüleri nasıl çağırdığınıza bağlı olarak, belirli bir proje kimliği için farklı Firebase proje kimlikleri veya birden çok öykünücü örneği kullanarak bir öykünücünün birden çok örneğini çalıştırabilirsiniz. Bu gibi durumlarda emülatör örnekleri ayrı bir ortamda çalışıyor.

Emulator Suite UI, farklı ürün emülatörleri ve belirli bir emülatörün çalışan tüm örneklerinin her durumda doğru şekilde iletişim kurabilmesi için tüm öykünücü çağrıları için bir proje kimliği belirlemek genellikle iyi bir uygulamadır.

Local Emulator Suite, ortamda birden fazla proje kimliği algıladığında uyarı verir, ancak singleProjectMode anahtarını false olarak ayarlayarak bu davranışı geçersiz firebase.json .

Proje kimliği beyan(lar)ını aşağıdakilerde uyumsuzluklar için kontrol edebilirsiniz:

  • Komut satırındaki varsayılan proje. Varsayılan olarak proje kimliği, başlangıçta firebase init veya firebase use ile seçilen projeden alınacaktır. Projelerin listesini görüntülemek (ve hangisinin seçildiğini görmek) için firebase projects:list kullanın.
  • Kural birim testleri. Proje kimliği genellikle Kural Birimi Test kitaplığı yöntemleri initializeTestEnvironment veya initializeTestApp çağrılarında belirtilir.
  • Komut satırı --project bayrağı. Firebase CLI --project bayrağını geçmek, varsayılan projeyi geçersiz kılar. Birim testlerinde ve uygulama başlatmada bayrağın değerinin proje kimliğiyle eşleştiğinden emin olmanız gerekir.

Ayrıca Apple platformlarınızı , Android ve web projelerinizi yapılandırırken belirlediğiniz platforma özel proje kimliği yapılandırmalarını da kontrol edin.

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": {
    "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 öykünücüsü, Cloud Firestore öykünücüsü ve Cloud Storage for Firebase ö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ç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. Öykünücü 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 for Firebase öykünücüsü ile birlikte 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 for Firebase öykünücüsü ile birlikte 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 for Firebase ö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 for Firebase öykünücüsü ile birlikte 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 for Firebase öykünücüsü ile birlikte 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 for Firebase ö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

Authentication, Cloud Firestore, Realtime Database ve Cloud Storage for Firebase öykünücülerinden verileri paylaşılabilir, ortak bir temel veri kümesi olarak kullanmak üzere 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 export_directory

Kimlik Doğrulama, Cloud Firestore, Realtime Database veya Firebase emülatörü için Cloud Storage . Çalışan bir Cloud Firestore, Realtime Database veya Cloud Storage for Firebase ö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 4.7.2
Firebase için Bulut Depolama 20.0.0 8.0.0 8.4.0 7.0.0 11.0.0 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
Firebase için 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