Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

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 şunlara ihtiyacınız olacak:

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

Emulator Suite'i yüklemek için:

  1. Firebase CLI'yi yükleyin. Halihazırda Firebase CLI kurulu değilse şimdi kurun . Emulator Suite'i kullanmak için CLI sürüm 8.14.0 veya üstüne ihtiyacınız olacak. 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ı belirtmek için ekrandaki komut istemlerini izleyerek mevcut çalışma dizinini bir Firebase projesi olarak başlatın:
    firebase init
  3. Emulator Suite'i kurun. Bu komut, ilgili ö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ı başlatır.
    firebase init emulators

Bir emülatör yüklendikten sonra, güncelleme kontrolü yapılmaz ve Firebase CLI sürümünüzü güncelleyene kadar hiçbir ek otomatik indirme işlemi gerçekleşmez.

Emulator Suite'i yapılandırın

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

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

firebase init emulators 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.

Komut Açıklama
başlangıç ​​emülatörleri Bir öykünücü başlatma sihirbazını başlatın. Yüklenecek öykünücüleri belirleyin ve isteğe bağlı olarak öykünücü bağlantı noktası ayarlarını belirtin. init emulators zarar vermez; varsayılanların kabul edilmesi mevcut öykünücü yapılandırmasını koruyacaktır.

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

Her emülatör, tercih edilen bir varsayılan değer ile makinenizdeki farklı bir bağlantı noktasına bağlanır.

Emülatör Varsayılan Bağlantı Noktası
Doğrulama 9099
Emulator Suite UI 4000
Bulut İşlevleri 5001
Gerçek Zamanlı Veritabanı 9000
Cloud Firestore 8080
Pub / Sub 8085
Firebase Hosting 5000

Güvenlik Kuralları yapılandırması

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

{
  // Existing firebase configuration ...
  "database": {
    "rules": "database.rules.json"
  },
  "firestore" {
    "rules": "firestore.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"
    },
    "functions": {
      "port": "5001"
    },
    "database": {
      "port": "9000"
    },
    "pubsub": {
      "port": "8085"
    }
  }
}

Emülatörleri başlatın

Öykünücüleri manuel olarak sonlandırılana kadar veya belirlenmiş bir test komut dosyası süresince çalışacak ve ardından otomatik olarak kapanacak şekilde başlatabilirsiniz.

Komut Açıklama
öykünücüler: başlangıç firebase.json yapılandırılan firebase.json ürünleri için emülatörleri firebase.json . Öykünücü işlemleri, açıkça durdurulana kadar çalışmaya devam eder. emulators:start çağırma emulators:start , emülatörleri önceden kurulu değilse ~ / .cache / firebase / emulators / konumuna indirir.
Bayrak Açıklama
--only İsteğe bağlı. Hangi emülatörlerin başlayacağını sınırlayın. Bir veya daha fazla "firestore", "veritabanı", "işlevler", "barındırma" veya "pubsub" belirterek virgülle ayrılmış bir emülatör adları listesi sağlayın. Emulator Suite UI sunucusunun --only seçeneğini kullandığınızda başlatılmadığını unutmayın.
--inspect-functions debug_port İsteğe bağlı. Belirtilen bağlantı noktasındaki (veya bağımsız değişken atlanırsa varsayılan bağlantı noktası 9229) işlevlerin kesme noktası hata ayıklamasını etkinleştirmek için Cloud Functions emülatörüyle birlikte kullanın. Bu bayrak sağlandığında, Cloud Functions emülatörü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; davranış, buluttaki işlevlerin çok işlemli, paralel yürütülmesinden farklı olsa da, bu işlev hata ayıklamasını basitleştirir.
--export-on-exit= İsteğe bağlı. Cloud Firestore veya Realtime Database emülatörü ile kullanın. Öykünücülere, öykünücüler için açıklandığı gibi, kapatma gerçekleştiğinde verileri bir dizine emulators:export komutu. Dışa aktarma dizini şu bayrakla 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 farklı dizin yollarını geçmesi --import ve --export-on-exit bayrakları.
import_directory --import= import_directory İsteğe bağlı. Cloud Firestore veya Realtime Database emülatörü ile kullanın. --export-on-exit başlatma seçeneğini veya emulators:export kullanarak kaydedilen verileri içe aktarın emulators:export çalışan bir Cloud Firestore veya Realtime Database emülatör örneğine emulators:export . Halihazırda öykünücü belleğinde bulunan herhangi bir verinin üzerine yazılacaktır.
öykünücüler: exec scriptpath firebase.json yapılandırılan firebase.json ürünleri için emülatörleri başlattıktan sonra komut dosyasını scriptpath çalıştırın. Öykünücü işlemleri, komut dosyası çalışması bittiğinde otomatik olarak durur.
Bayrak Açıklama
--only İsteğe bağlı. Hangi emülatörlerin başlayacağını sınırlayın. Bir veya daha fazla "firestore", "veritabanı", "işlevler", "barındırma" veya "pubsub" belirterek virgülle ayrılmış bir öykünücü adları listesi sağlayın.
--inspect-functions debug_port İsteğe bağlı. Belirtilen bağlantı noktasındaki (veya bağımsız değişken atlanırsa varsayılan bağlantı noktası 9229) işlevlerin kesme noktası hata ayıklamasını etkinleştirmek için Cloud Functions emülatörüyle birlikte kullanın. Bu bayrak sağlandığında, Cloud Functions emülatörü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; davranış, buluttaki işlevlerin çok işlemli, paralel yürütülmesinden farklı olsa da, bu işlev hata ayıklamasını basitleştirir.
--export-on-exit= İsteğe bağlı. Cloud Firestore veya Realtime Database emülatörü ile kullanın. Öykünücülere, öykünücüler için açıklandığı gibi, kapatma gerçekleştiğinde verileri bir dizine emulators:export komutu. Dışa aktarma dizini şu bayrakla 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 farklı dizin yollarını geçmesi --import ve --export-on-exit bayrakları.
import_directory --import= import_directory İsteğe bağlı. Cloud Firestore veya Realtime Database emülatörü ile kullanın. --export-on-exit başlatma seçeneğini veya emulators:export kullanarak kaydedilen verileri içe aktarın emulators:export çalışan bir Cloud Firestore veya Realtime Database emülatör örneğine emulators:export . Halihazırda öykünücü belleğinde bulunan herhangi bir verinin üzerine yazılır.
--ui İsteğe bağlı. Yürütme sırasında Emülatör kullanıcı arayüzünü çalıştırın.

firebase emulators:exec yöntemi genellikle sürekli entegrasyon iş akışları için daha uygundur.

Öykünücü verilerini dışa ve içe aktarın

Paylaşılabilir, ortak bir temel veri kümesi olarak kullanmak için Cloud Firestore emülatöründen 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: export_directory

Cloud Firestore veya Realtime Database emülatörü . Çalışan bir Cloud Firestore veya Realtime Database emülatör örneğinden verileri dışa aktarın. Belirtilen export_directory , halihazırda 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 bir veri bildirim dosyası, firebase-export-metadata.json .

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

CI sisteminizle entegre edin

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

Emulator Suite'in tipik bir CI kurulumundaki kapsayıcılarla kurulumu ve yapılandırması basittir.

Dikkat edilmesi gereken birkaç konu var:

  • JAR dosyaları ~/.cache/firebase/emulators/ yüklenir ve önbelleğe alınır.

    • Tekrarlanan indirmeleri önlemek için bu yolu CI önbellek yapılandırmanıza eklemek isteyebilirsiniz.
  • firebase.json bir firebase.json dosyanız yoksa, emulators:start bir komut satırı bağımsız değişkeni eklemelisiniz emulators:start veya emulators:exec komutu, hangi emülatörlerin başlatılması gerektiğini belirtmek için. Örneğin,
    --only functions,firestore .

Bir kimlik doğrulama belirteci oluşturun (yalnızca barındırma emülatörü)

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

Bir belirteç oluşturmak için yerel ortamınızda firebase login:ci ; bu bir CI sisteminden yapılmamalıdır. Kimlik doğrulamak için talimatları izleyin. Belirteç derlemelerde 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, oluşturma betiklerinde kullanılabilecek ortam değişkenlerini belirtmenize izin FIREBASE_TOKEN , değer erişim belirteci dizesi olan FIREBASE_TOKEN adlı bir ortam değişkeni oluşturun. FIREBASE_TOKEN CLI, FIREBASE_TOKEN ortam değişkenini otomatik olarak alacak ve emülatörler düzgün şekilde başlayacaktır.

Son çare olarak, jetonu oluşturma komut dosyanıza dahil edebilirsiniz, ancak güvenilmeyen tarafların erişiminin olmadığından emin olun. Bu sabit kodlu yaklaşım için, firebase emulators:exec --token "YOUR_TOKEN_STRING_HERE" ekleyebilirsiniz firebase emulators:exec komutu.

Emulator Hub REST API'sini kullanın

Çalışan emülatörleri listeleyin

Şu anda çalışan öykünücüleri listelemek için, Öykünücü Hub'ını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 İşlevi Tetikleyicilerini Etkinleştirme / Devre Dışı Bırakma

Bazı durumlarda, yerel işlev tetikleyicilerini geçici olarak devre dışı bırakmanız gerekecektir. Örneğin, Cloud Functions emülatöründe çalışan herhangi bir onDelete işlevini tetiklemeden Cloud Firestore emülatörü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
}

Devre dışı bırakıldıktan sonra yerel işlev tetikleyicilerini etkinleştirmek için, Emulator /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
}

Emulator SDK entegrasyonları

Bu bölümdeki tablolar, hangi emülatörlerin istemci ve Yönetici SDK'ları tarafından desteklendiğini gösterir. Gelecek , öykünücü desteğinin planlandığı ancak henüz mevcut olmadığı anlamına gelir.

İstemci SDK kullanılabilirliği

Android iOS 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
Cloud Firestore 21.6.0 7.2.0 8.0.0 6.4.0 Gelecek Yok
Doğrulama 20.0.0 7.0.0 8.0.0 7.0.0 Gelecek Gelecek
Bulut İşlevleri 19.1.0 7.2.0 8.0.0 Yok Yok Yok
Barındırma Yok Yok Yok Yok Yok Yok

Admin SDK kullanılabilirliği

Düğüm Java Python Git
Gerçek Zamanlı Veritabanı 8.6.0 6.10.0 2.18.0 Gelecek
Cloud Firestore 8.0.0 6.10.0 3.0.0 1.0.0
Doğrulama 9.3.0 Gelecek Gelecek Gelecek
Bulut İşlevleri Yok Yok Yok Yok
Barındırma Yok Yok Yok Yok