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ü:
- 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. - Farklı App Hosting ortamlarınıza kaydettiğiniz sırlar dışa aktarılabilir. Böylece, uygulamaları farklı ortamlarda simüle edebilirsiniz.
- 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 Suite'ü Yerel 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:
- Uygulamanızın projeye göre kök dizini. App Hosting ile monorepo kullanıyorsanız bu önemlidir.
- Gizli bilgileri belirli ortamlar için dışa aktarmak isteyip istemediğiniz.
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.