Firebase App Hosting Emülatör ile web uygulamalarını yerel olarak test etme

Firebase Local Emulator Suite'in bir parçası olan App Hosting emülatörünü kullanarak uygulamanızı App Hosting dağıtımından önce yerel olarak test edebilirsiniz.

App Hosting emülatörünü kullanmadan önce genel Firebase Local Emulator Suite iş akışını anladığınızdan, Local Emulator Suite'yi yükleyip yapılandırdığınızdan ve CLI komutlarını incelediğinizden emin olun.

Bu konuda, App Hosting hakkında bilgi sahibi olduğunuz varsayılmaktadır. Gerekirse App Hosting'un işleyiş şeklini anlamanıza yardımcı olması için App Hosting girişini ve diğer materyalleri inceleyin.

App Hosting emülatörüyle neler yapabilirim?

App Hosting emülatörü, web uygulamalarınızı yerel olarak test etmenize ve iyileştirmenize olanak tanır. Bu, geliştirme sürecinizi kolaylaştırabilir ve Firebase kullanılarak oluşturulup App Hosting'te dağıtılan web uygulamalarının kalitesini artırabilir.

App Hosting emülatörü:

  1. Web uygulamanızı, apphosting.yaml yapılandırma dosyalarında tanımlanan ortam değişkenleriyle yerel olarak çalıştırmanıza olanak tanır.
  2. Farklı App Hosting ortamlarınıza kaydettiğiniz sırlar dışa aktarılabilir. Böylece, uygulamaları farklı ortamlarda simüle edebilirsiniz.
  3. Diğer Firebase emülatörleriyle birlikte kullanılabilir. Firestore, Auth veya başka bir emülatör kullanıyorsanız Local Emulator Suite, bu emülatörlerin App Hosting emülatöründen önce başlatılmasını sağlar.

Emülatörü yapılandırma

Başlamak için Local Emulator SuiteYerel Emulator Suite'i yükleme, yapılandırma ve entegre etme bölümünde açıklandığı şekilde yükleyip başlatın. Kurmak istediğiniz diğer Firebase emülatörlerine ek olarak App Hosting Emulator'ü de seçin. CLI, sizden aşağıdakiler gibi bazı App Hosting emülatör değerlerini ister:

firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

Bu kurulum akışında sağladığınız tüm değerler, firebase.json'daki App Hosting emülatör yapılandırmanızı güncellemek için kullanılır. Ayrıca, firebase.json'ü doğrudan güncelleyerek uygulama barındırma emülatörünü yapılandırabilirsiniz. Uygulama barındırma emülatörünün şeması:

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommandOverride, emülatör başlatılırken otomatik olarak oluşturulur ve ayarlanır. Bu parametre sağlanmazsa emülatör, paket yöneticinizin dev komutunu algılayıp çalıştırır.
  • rootDirectory, monorepo proje kurulumlarını desteklemek için kullanılır. Web uygulamanız bir alt dizindeyse bu dizinin köke göreli yolunu (firebase.json konumu) sağlamanız gerekir.

Emülasyonu yönetme

Emülatör başlatma işlemi, uygulamanızın kök dizininde bir apphosting.local.yaml dosyası oluşturur. Bu yapılandırma dosyası, üretimde kullanılan apphosting.yaml dosyasıyla aynı şemaya sahiptir ancak yalnızca yerel geliştirme için tasarlanmıştır. Emülatör varsayılan olarak apphosting.yaml dosyanızdaki yapılandırmayı okur ancak bir apphosting.local.yaml dosyası varsa bu dosyadaki yapılandırmalara öncelik verilir.

Farklı ortamları yerel olarak simüle etmek için sırları dışa aktarma

Birden fazla ortam kullanıyorsanız ve farklı uygulama ortamlarını yerel olarak simüle etmek istiyorsanız ilgili ortamların gizli bilgilerine ihtiyacınız olabilir. apphosting:config:export KSA komutunu kullanarak belirli bir ortam için gizli bilgileri dışa aktarabilirsiniz (Alternatif olarak, Emülatörü yapılandırma bölümünde gösterildiği gibi, isteğe bağlı olarak emülatör başlatılırken gizli bilgileri içe aktarabilirsiniz).

Bu komut için projenizdeki mevcut App Hosting ortamlarından seçim yapmanız gerekir. Ortama özgü App Hosting yapılandırması ("apphosting.staging.yaml" gibi) ve temel App Hosting yapılandırması ("apphosting.yaml") birleştirilir. Ortama özgü yapılandırma önceliklidir. Her iki yapılandırmada da aynı ada sahip gizli anahtarlar varsa ortama özgü yapılandırmadaki gizli anahtar kullanılır.

Örneğin, bir hazırlık ortamından sifreyi emülatöre aktarmak için:

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

apphosting.local.yaml dosyanız, dışa aktarılan gizli anahtarları ortam değişkenleri olarak içerecek şekilde güncellenir (veya yoksa oluşturulur). Dosya artık düz metin biçiminde hassas bilgiler içerdiğinden, kaynak kod depolama alanınıza yanlışlıkla gönderilmesini önlemek için otomatik olarak .gitignore dosyanıza eklenir.

Emülatörü çalıştırma

firebase emulators:start

Bu işlem, App Hosting emülatörü de dahil olmak üzere firebase.json dosyanızda tanımlanan tüm emülatörleri başlatır.