Firebase KSA'yı kullanarak Next.js web uygulamalarınızı Firebase'e dağıtabilir ve Firebase Hosting ile sunabilirsiniz. CLI, Next.js ayarlarınıza uyar ve bunları Firebase ayarlarına dönüştürür. Bu işlem için sizin tarafınızdan ek yapılandırma yapılması gerekmez veya çok az yapılandırma yapılması gerekir. Uygulamanızda dinamik sunucu tarafı mantığı varsa KSA bu mantığı Cloud Functions for Firebase'ya dağıtır.
Başlamadan önce
Uygulamanızı Firebase'e dağıtmaya başlamadan önce aşağıdaki koşulları ve seçenekleri inceleyin:
- Firebase KSA 12.1.0 veya sonraki sürümleri. Tercih ettiğiniz yöntemi kullanarak CLI'yi yüklediğinizden emin olun.
İsteğe bağlı: Firebase projenizde faturalandırma etkinleştirilmiş olmalıdır (SSR kullanmayı planlıyorsanız gereklidir).
İsteğe bağlı: Firebase dostu özelliklerinden yararlanmak için deneysel ReactFire kitaplığını kullanın.
Firebase'i başlatma
Başlamak için çerçeve projenizde Firebase'i başlatın.
Yeni bir proje için Firebase CLI'yı kullanın veya mevcut bir proje için firebase.json
'ı değiştirin.
Yeni bir projeyi başlatma
- Firebase CLI'da web çerçeveleri önizlemesini etkinleştirin:
firebase experiments:enable webframeworks
Başlatma komutunu CLI'dan çalıştırın ve istemleri uygulayın:
firebase init hosting
"Web çerçevesi kullanmak istiyor musunuz?" sorusuna evet yanıtını verin. (deneysel)"
Barındırma kaynağı dizininizi seçin. Bu mevcut bir Next.js uygulamasıysa CLI işlemi tamamlanır ve bir sonraki bölüme geçebilirsiniz.
İstenirse Next.js'yi seçin.
Statik içerik sunma
Firebase'i başlattıktan sonra, standart dağıtım komutuyla statik içerik sunabilirsiniz:
firebase deploy
Dağıtılan uygulamanızı canlı sitesinde görüntüleyebilirsiniz.
Dinamik içeriği önceden oluşturma
Firebase CLI, getStaticProps ve getStaticPaths kullanımını algılar.
İsteğe bağlı: Firebase JS SDK ile entegrasyon
Firebase JS SDK yöntemlerini hem sunucu hem de istemci paketlerine dahil ederken ürünü kullanmadan önce isSupported()
işaretini kontrol ederek çalışma zamanı hatalarına karşı koruma sağlayın.
Tüm ürünler tüm ortamlarda desteklenmez.
İsteğe bağlı: Firebase Admin SDK ile entegrasyon
Tarayıcı derlemenize dahil edilen Admin SDK paketleri başarısız olur. Bu paketlere yalnızca getStaticProps ve getStaticPaths içinde başvurun.
Tamamen dinamik içerik yayınlama (SSR)
Firebase KSA, getServerSideProps kullanımını algılar. Bu gibi durumlarda CLI, dinamik sunucu kodu çalıştırmak için işlevleri Cloud Functions for Firebase'ya dağıtır. Bu işlevlerle ilgili alan ve çalışma zamanı yapılandırması gibi bilgileri Firebase konsolunda görüntüleyebilirsiniz.
Hosting davranışını next.config.js
ile yapılandırma
Görüntü Optimizasyonu
Next.js Image Optimization'ın kullanılması desteklenir ancak SSR kullanmıyor olsanız bile bir işlevin (Cloud Functions for Firebase içinde) oluşturulmasını tetikler.
Yönlendirmeler, Yeniden Yazmalar ve Üstbilgiler
Firebase CLI, next.config.js
içindeki yönlendirmelere, yeniden yazmalara ve üstbilgilere uyar ve bunları dağıtım sırasında ilgili eşdeğer Firebase Hosting yapılandırmasına dönüştürür. Bir Next.js yönlendirmesi, yeniden yazma veya başlığı eşdeğer bir Firebase Hosting başlığına dönüştürülemiyorsa yedek olarak işlev oluşturulur. Bu, resim optimizasyonu veya SSR kullanmıyor olsanız bile geçerlidir.
İsteğe bağlı: Firebase Authentication ile entegrasyon
Web çerçevesiyle uyumlu Firebase dağıtım aracı, çerezleri kullanarak istemci ve sunucu durumunu otomatik olarak senkronize eder. SSR'de kimlik doğrulama bağlamına erişmek için bazı yöntemler sağlanır:
- Express
res.locals
nesnesi, isteğe bağlı olarak kimliği doğrulanmış bir Firebase App örneği (firebaseApp
) ve şu anda oturum açmış kullanıcıyı (currentUser
) içerir. Bu nesneyegetServerSideProps
içinde erişilebilir. - Kimliği doğrulanmış Firebase uygulaması adı, rota sorgusunda (
__firebaseAppName
) sağlanır. Bu, bağlam içinde manuel entegrasyona olanak tanır:
// get the authenticated Firebase App
const firebaseApp = getApp(useRouter().query.__firebaseAppName);