Bazı ek yapılandırmalarla, entegrasyon desteğini Angular ve Next.js dışındaki çerçevelere genişletmek için temel çerçeveye duyarlı CLI işlevini temel alabilirsiniz.
Başlamadan önce
Uygulamanızı Firebase'e dağıtmaya başlamadan önce aşağıdaki koşulları ve seçenekleri inceleyin:
- Firebase 12.1.0 veya daha yeni bir KSA sürümü. Tercih ettiğiniz yöntemi kullanarak CLI'yi yüklediğinizden emin olun.
- İsteğe bağlı: Firebase projenizde faturalandırma etkin (SSR kullanmayı planlıyorsanız gereklidir)
Firebase'i başlatma
Başlamak için Firebase'i çerçeve projeniz için ilk olarak hazırlayın.
Yeni bir proje için Firebase CLI'yi kullanın veya mevcut bir proje için firebase.json
dosyasını değiştirin.
Yeni projeyi başlatma
- Firebase CLI'de web çerçeveleri önizlemesini etkinleştirin:
firebase experiments:enable webframeworks
KSA'dan başlatma komutunu çalıştırın ve ardından talimatları uygulayın:
firebase init hosting
"Web çerçevesi kullanmak ister misiniz? (deneysel)"
Barındırma kaynak dizininizi seçin. Bu, mevcut bir web uygulaması olabilir.
İstenirse Express.js / özel'i seçin.
Mevcut bir projeyi başlatma
firebase.json
'teki barındırma yapılandırmanızı public
yerine source
seçeneği olacak şekilde değiştirin. Örneğin:
{
"hosting": {
"source": "./path-to-your-express-directory"
}
}
Statik içerik sunma
Statik içerik dağıtmadan önce uygulamanızı yapılandırmanız gerekir.
Yapılandır
Uygulamanızı nasıl dağıtacağınızı bilmek için Firebase KSA'nın hem uygulamanızı derleyebilmesi hem de araçlarınızın Hosting için amaçlanan öğeleri nereye yerleştirdiğini bilmesi gerekir. Bu işlem, package.json
içindeki npm derleme komut dosyası ve CJS dizinleri yönergesiyle gerçekleştirilir.
Aşağıdaki package.json dosyasını ele alalım:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
…
}
Firebase CLI yalnızca derleme komut dosyanızı çağırır. Bu nedenle, derleme komut dosyanızı kapsamlı hale getirmeniz gerekir.
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
…
}
Çerçeveniz hazır olarak ön oluşturmayı desteklemiyorsa Rendertron gibi bir araç kullanmayı düşünebilirsiniz. Rendertron, uygulamanızın yerel bir örneğine gözetimsiz Chrome istekleri göndermenize olanak tanır. Böylece, elde edilen HTML'yi Hosting'te yayınlanacak şekilde kaydedebilirsiniz.
Son olarak, farklı çerçeveler ve derleme araçları yapılarını farklı yerlerde depolar. Derleme komut dosyanızın oluşturulan yapıları nereye çıkardığını KSA'ya bildirmek için directories.serve
öğesini kullanın:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
"directories": {
"serve": "dist"
},
…
}
Dağıt
Uygulamanızı yapılandırdıktan sonra standart dağıtım komutuyla statik içerik sunabilirsiniz:
firebase deploy
Dinamik İçerik Yayınlama
Express uygulamanızı Cloud Functions for Firebase üzerinde yayınlamak için Express uygulamanızın (veya ekspres stildeki URL işleyicinizin), kitaplığınız npm paketlendikten sonra Firebase'in bulabileceği şekilde dışa aktarıldığından emin olun.
Bunu başarmak için files
yönergenizin sunucu için gereken her şeyi içerdiğinden ve ana giriş noktanızın package.json
ürününde doğru şekilde ayarlandığından emin olun:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack && npm run static && npm run prerender",
"static": "cp static/* dist",
"prerender": "ts-node tools/prerender.ts"
},
"directories": {
"serve": "dist"
},
"files": ["dist", "server.js"],
"main": "server.js",
...
}
Express uygulamanızı app
adlı bir işlevden dışa aktarın:
// server.js
export function app() {
const server = express();
…
return server;
}
Dilerseniz hızlı stil URL işleyici dışa aktarmak için handle
adını verin:
export function handle(req, res) {
res.send(‘hello world’);
}
Dağıt
firebase deploy
Bu işlem, statik içeriğinizi Firebase Hosting'e dağıtır ve Firebase'in Cloud Functions for Firebase'te barındırılan Express uygulamanıza geri dönmesine olanak tanır.
İsteğe bağlı: Firebase Authentication ile entegrasyon
Web çerçevesi uyumlu Firebase dağıtım araçları, çerezleri kullanarak istemci ve sunucu durumunu otomatik olarak senkronize eder. Kimlik doğrulama bağlamına erişmek için Express res.locals
nesnesi isteğe bağlı olarak kimliği doğrulanmış bir Firebase uygulaması örneği (firebaseApp
) ve oturumu açık olan kullanıcıyı (currentUser
) içerir.