Uzantıları manifest dosyasıyla proje yapılandırmalarını yönetme

Uzantılar manifesti, uzantı örnekleri ve yapılandırmalarının bir listesidir. Manifest ile şunları yapabilirsiniz:

  • Uzantı yapılandırmanızı başkalarıyla paylaşma
  • Uzantı yapılandırmanızı farklı projeler arasında kopyalama (ör. hazırlık projenizden üretim projenize)
  • Tüm uzantılarınızı tek seferde dağıtın
  • Firebase Local Emulator Suite'i kullanarak uzantılarınızın uygulamanızla nasıl çalıştığını test edin
  • Uzantı yapılandırmanızı kaynak kontrolüne kaydedin
  • CI/CD ardışık düzeninize uzantıları ekleme

Uzantı manifesti iki bölümden oluşur:

  • Örnek kimliğinin uzantı sürümü referansıyla eşlemesi olan firebase.json öğenizin extensions bölümü. Örnek:

    {
     "extensions": {
       "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18",
       "my-image-resizer": "firebase/storage-resize-images@^0.1.22",
     }
    }
    
  • Uzantı örneklerinizin her birinin yapılandırmasını içeren .env dosyalarını Firebase proje dizininizin extensions/ alt dizininde bulabilirsiniz. Örneğin, storage-resize-images örneğinin aşağıdaki gibi bir .env dosyası olabilir:

    IMAGE_TYPE=jpeg
    LOCATION=us-central1
    IMG_BUCKET=${param:PROJECT_ID}.appspot.com
    IMG_SIZES=100x100
    DELETE_ORIGINAL_FILE=false

Uzantı manifesti oluşturma

Uzantı manifesti oluşturmanın üç yolu vardır:

  • Uzantı manifestinizi Firebase CLI ile yönetme
  • Projenin uzantı yapılandırmasını dışa aktarma
  • Manifest dosyalarını manuel olarak düzenleyin

İlk iki yöntem aşağıda açıklanmıştır.

Uzantı manifestinizi Firebase CLI ile yönetme

Projenin mevcut yapılandırmasını değiştirmeden uzantı manifestini güncellemek için Firebase CLI'ın ext: komutlarının çoğunu --local seçeneğiyle çalıştırabilirsiniz.

Örnek:

firebase ext:install --local firebase/firestore-bigquery-export

Yukarıdaki komutu çalıştırdığınızda, firebase/firestore-bigquery-export uzantısının en son sürümünü yapılandırmanız ve yapılandırmayı manifest dosyasına kaydetmeniz istenir. Ancak, yapılandırma projenize dağıtılmaz.

Uzantıların manifest dosyasını değiştiren birkaç komut örneğini burada bulabilirsiniz:

# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local

# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local

# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local 

# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local

Projenin uzantı yapılandırmasını dışa aktarma

Projenin mevcut uzantı yapılandırmasını manifest dosyasına kaydetmek için aşağıdakileri yapın:

  1. Henüz yapmadıysanız Firebase CLI'ı ayarlayın
  2. Kabuk isteminden proje dizinine geçiş yapın. (Proje dizininiz firebase.json dosyasını içerir).
  3. ext:export komutunu çalıştırın:
    firebase ext:export

ext:export komutu, firebase.json dosyasına bir extensions bölümü ekler. Ayrıca ext:export komutu, yüklediğiniz her uzantı örneği için bir .env dosyası içeren extensions dizini oluşturur. Bu dosyalar, her örneğin yapılandırma parametrelerini içerir.

Firebase Local Emulator Suite ile uzantı yapılandırmasını test etme

Uzantılar manifest dosyanıza bazı uzantı örnekleri ekledikten sonra bunları Local Emulator Suite'i kullanarak test edebilirsiniz.

  1. Local Emulator Suite'i yükleyin ve yapılandırın.

  2. Local Emulator Suite'i başlatın:

    • Emulator Suite'i etkileşimli olarak çalıştırmak için şu komutu çalıştırın: firebase emulators:start
    • Emulator Suite'i çalıştırmak ve test komut dosyası yürütmek için şu komutu çalıştırın: firebase emulators:exec my-test.sh

Şimdi, manifest dosyanızda listelenen uzantı örnekleri varsa Local Emulator Suite bu uzantıların kaynak kodunu ~/.cache/firebase/extensions hedefine indirecektir. İndirme tamamlandıktan sonra Local Emulator Suite başlar. Uzantıların arka planda tetiklenen işlevlerinin herhangi birini tetikleyebilir ve uygulamanızla entegrasyonunu test etmek için uygulamanızı Emulator paketine bağlayabilirsiniz.

Projeye uzantı yapılandırması dağıtma

Uzantı manifestinize birkaç uzantı örnekleri ekledikten sonra bunları Firebase CLI kullanarak bir projeye dağıtabilirsiniz. Uzantılar manifest dosyasıyla dağıtım yaptığınızda, manifest dosyasındaki tüm uzantı örneklerini tek seferde bir projeye yükler, günceller ve yapılandırırsınız.

Uzantıların manifestini dağıtmak için:

  1. Bir kabuk isteminden, kayıtlı uzantı yapılandırmasını içeren dizine geçiş yapın. (Bu, firebase.json içeren dizindir. ext:export öğesini kısa süre önce çalıştırdıysanız zaten doğru dizindesinizdir.)
  2. deploy komutunu çalıştırın. Uzantıları mevcut projenin dışındaki bir projeye dağıtmak istiyorsanız --project= özelliğini de belirtin:
    firebase deploy --only extensions –-project=YOUR_PROJECT_ID

deploy komutu her örnek yapılandırmasını doğrular. firebase.json içinde listelenmeyen uzantı örneklerini hedef projenizden silmek isteyip istemediğinizi sorar ve ardından tüm uzantı örneklerinizi dağıtın.

Projeye özel uzantı yapılandırmaları

Kaydedilen uzantı yapılandırmaları, birden fazla farklı projeye dağıtım yapmak için kullanılabilir. Örneğin, bir hazırlık projesi ve bir üretim projesi. Bunu yaparken bazı parametre değerlerinin her proje için farklı olması gerekebilir. Projeye özel .env dosyaları bunu mümkün kılar:

  • extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID projesindeki projeler arasında farklı olan parametre değerleri girin
  • Paylaşılan parametre değerlerini extensions/EXTENSION_INSTANCE_ID.env bölümüne girin.

Bazen uzantılarınızı emüle ederken farklı bir parametre değeri kullanmak isteyebilirsiniz: Örneğin, üretim anahtarı yerine test API anahtarı sağlamak isteyebilirsiniz. Bu parametreleri bir .local dosyasına yerleştirin:

  • Emülasyon sırasında kullanmak istediğiniz gizli olmayan parametreleri extensions/EXTENSION_INSTANCE_ID.env.local öğesine ekleyin
  • Gizli anahtar parametre değerlerini extensions/EXTENSION_INSTANCE_ID.secret.local bölümüne yerleştirin