با برخی پیکربندیهای اضافی، میتوانید بر اساس عملکرد CLI مبتنی بر چارچوب آگاه، پشتیبانی از یکپارچهسازی را به چارچوبهایی غیر از Angular و Next.js گسترش دهید.
قبل از شروع
قبل از اینکه شروع به استقرار برنامه خود در Firebase کنید، شرایط و گزینه های زیر را بررسی کنید:
- Firebase CLI نسخه 12.1.0 یا بالاتر. مطمئن شوید که CLI را با استفاده از روش دلخواه خود نصب کنید .
- اختیاری: صورتحساب در پروژه Firebase شما فعال است (اگر قصد استفاده از SSR را دارید، لازم است)
Firebase را راه اندازی کنید
برای شروع، Firebase را برای پروژه چارچوب خود مقداردهی کنید. از Firebase CLI برای یک پروژه جدید استفاده کنید، یا firebase.json
برای یک پروژه موجود تغییر دهید.
یک پروژه جدید را راه اندازی کنید
- در Firebase CLI، پیشنمایش چارچوبهای وب را فعال کنید:
firebase experiments:enable webframeworks
دستور اولیه سازی را از CLI اجرا کنید و سپس دستورات را دنبال کنید:
firebase init hosting
به "آیا می خواهید از چارچوب وب استفاده کنید؟ (تجربی)" بله پاسخ دهید.
دایرکتوری منبع میزبانی خود را انتخاب کنید. این می تواند یک برنامه وب موجود باشد.
در صورت درخواست، Express.js / custom را انتخاب کنید
یک پروژه موجود را راه اندازی کنید
تنظیمات میزبانی خود را در firebase.json
تغییر دهید تا یک گزینه source
داشته باشد، نه یک گزینه public
. به عنوان مثال:
{
"hosting": {
"source": "./path-to-your-express-directory"
}
}
محتوای ثابت را ارائه دهید
قبل از استقرار محتوای استاتیک، باید برنامه خود را پیکربندی کنید.
پیکربندی کنید
برای اینکه بدانید چگونه برنامه خود را اجرا کنید، Firebase CLI باید بتواند هم برنامه شما را بسازد و هم بداند ابزار شما دارایی های مقصد برای Hosting را در کجا قرار می دهد. این کار با اسکریپت ساخت npm و دستورالعمل دایرکتوری های CJS در package.json
انجام می شود.
با توجه به package.json زیر:
{
"name": "express-app",
"version": "0.0.0",
"scripts": {
"build": "spack",
"static": "cp static/* dist",
"prerender": "ts-node prerender.ts"
},
…
}
Firebase CLI فقط اسکریپت ساخت شما را فراخوانی می کند، بنابراین باید مطمئن شوید که اسکریپت ساخت شما جامع است.
{
"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"
},
…
}
اگر چارچوب شما از پیش رندر خارج از جعبه پشتیبانی نمی کند، از ابزاری مانند Rendertron استفاده کنید. Rendertron به شما این امکان را می دهد که درخواست های بدون هد کروم را در برابر یک نمونه محلی از برنامه خود ارسال کنید، بنابراین می توانید HTML حاصل را ذخیره کنید تا در Hosting ارائه شود.
در نهایت، فریم ورک های مختلف و ابزارهای ساخت، مصنوعات خود را در مکان های مختلف ذخیره می کنند. از directories.serve
استفاده کنید تا به CLI بگویید که اسکریپت ساخت شما در حال خروجی آرتیفکت های به دست آمده است:
{
"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"
},
…
}
مستقر کنید
پس از پیکربندی برنامه خود، می توانید محتوای استاتیک را با دستور استقرار استاندارد ارائه دهید:
firebase deploy
ارائه محتوای پویا
برای ارائه برنامه Express خود در Cloud Functions for Firebase ، مطمئن شوید که برنامه Express شما (یا کنترلکننده URL به سبک Express) بهگونهای صادر میشود که Firebase بتواند آن را پس از بستهبندی npm کتابخانه شما پیدا کند.
برای انجام این کار، اطمینان حاصل کنید که دستورالعمل files
شما شامل همه چیزهایی است که برای سرور مورد نیاز است و نقطه ورودی اصلی شما به درستی در package.json
تنظیم شده است:
{
"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",
...
}
برنامه اکسپرس خود را از تابعی به نام app
صادر کنید:
// server.js
export function app() {
const server = express();
…
return server;
}
یا اگر ترجیح میدهید یک مدیریت URL به سبک اکسپرس صادر کنید، نام آن را handle
بگذارید:
export function handle(req, res) {
res.send(‘hello world’);
}
مستقر کنید
firebase deploy
این کار محتوای استاتیک شما را در Firebase Hosting مستقر میکند و به Firebase اجازه میدهد تا به برنامه Express شما که در Cloud Functions for Firebase میزبانی شده است بازگردد.
اختیاری: ادغام با Firebase Authentication
ابزار استقرار Firebase آگاه از چارچوب وب، به طور خودکار وضعیت سرویس گیرنده و سرور را با استفاده از کوکی ها همگام نگه می دارد. برای دسترسی به زمینه احراز هویت، شی Express res.locals
به صورت اختیاری حاوی یک نمونه برنامه Firebase احراز هویت ( firebaseApp
) و کاربر در حال حاضر وارد شده ( currentUser
) است.