الأطر والأدوات لاستضافة التطبيقات

تم تصميم Firebase App Hosting خصيصًا لدعم تطوير تطبيقات الويب الحديثة التي تركّز على الأُطر. استخدِم هذه الصفحة كمرجع للأدوات والأُطر التي تتوافق مع App Hosting مباشرةً، بالإضافة إلى نقطة انطلاق للتعرّف على الأُطر والأدوات ذات الصلة.

أُطر عمل الويب وApp Hosting

توفّر App Hosting مستويَين واسعَين من الدعم لأُطر الويب الحديثة: دعم مسبق الإعداد للبناء والنشر، ودعم على مستوى المنتدى من خلال المساهمات في المصادر المفتوحة التي تتوافق مع مواصفات حزمة الإخراج. في كلتا الحالتين، يتيح مكوّن محوّل إطار العمل دمج إطار عمل معيّن مع App Hosting.

الأُطر التي تتضمّن ميزة إنشاء التطبيقات ونشرها بشكل مُعدّ مسبقًا

من خلال توفير إمكانية إنشاء ونشر التطبيقات بشكل مسبق، تحدّد Firebase إطار العمل الذي تستخدمه من خلال فحص الملف package-lock.json أو ملف القفل الآخر، وتعمل على تحسين عمليات إنشاء التطبيقات ونشرها. وتلتزم Google بمواصلة توفير الدعم لهذه الأُطر، ويمكن لفريق دعم Firebase قبول تقارير المشاكل وطلبات الميزات.

يتوفّر مستوى الدعم هذا لما يلي:

  • Next.js
  • Angular

يمكنك الاطّلاع على جداول الدعم لمعرفة تفاصيل حول إصدارات ومستويات دعم معيّنة.

إذا حاولت نشر تطبيق Node.js لا يتضمّن ملف قفل، سيتعذّر على App Hosting إنشاء تطبيقك وتشغيله. يمكنك إنشاء package-lock.json من خلال تشغيل npm install في الدليل الجذر.

أُطر الموافقة التي يقدّمها المنتدى

بالإضافة إلى Next.js وAngular، تتيح App Hosting أيضًا استخدام أي إطار عمل للويب يمكنه توفير ناتج إصدار يتوافق مع مواصفات حزمة الإخراج. ويمكن لمطوّري أُطر العمل الاستفادة من مواصفات حزمة الإخراج لضمان توافق إطار العمل مع App Hosting. على سبيل المثال، يتيح فريق Nitro استخدام إطار عمل Nuxt الشائع، وقد أنشأ محوّل Firebase لإتاحة نشر تطبيقات Nuxt على App Hosting.

إذا أردت الاطّلاع على أُطر إضافية متوافقة مع App Hosting، يمكنك إنشاء محوّل أُطر أو التواصل مع المسؤولين عن صيانة الإطار لتحويل نواتج الإنشاء إلى تنسيق App Hosting. تُعدّ محوّلات Next.js وAngular أمثلة مرجعية جيدة لأي شخص ينشئ محوّلاً.

يمكنك العثور على معلومات حول الأُطر المتوافقة مع المنتدى على Firebase Open Source. يجب توجيه المشاكل وطلبات الميزات المتعلقة بأُطر العمل التي يدعمها المنتدى إلى المنتدى المفتوح المصدر أو مؤلفي أُطر العمل. في بعض الحالات، قد تتمكّن Google من المساعدة، ولكن المنتدى هو الجهة الأولى التي يمكن التواصل معها للحصول على الدعم بشأن هذه المحوّلات.

App Hosting محوّلات إطار العمل

في App Hosting، يتم توفير إمكانية استخدام كل من الأُطر التي تم إعدادها مسبقًا والأُطر التي يتيحها المنتدى من خلال محوّلات الأُطر. App Hosting إطار عمل المحولات لها دوران أساسيان:

  • وهي تحلّل رمز المصدر وأي ملفات إعداد خاصة بإطار العمل (مثل next.config.js) وتنشئ حزمة ناتج يمكن معالجتها من خلال بقية البنية الأساسية App Hosting.
  • ويتم تنفيذ أمر إنشاء التطبيق لإنشاء مواد عرض ثابتة وإنشاء نسخة محسّنة من تطبيقك للإصدار العلني.

تنشئ محوّلات أُطر العمل تطبيق Node.js باستخدام npm run build، وتعمل بشكل أفضل مع نصوص البرامج التلقائية لكل إطار عمل: next build لـ Next.js وng build لـ Angular. سيحاول App Hosting إنشاء إصدارات باستخدام أوامر إنشاء مخصّصة، ولكن لا يمكنه ضمان النجاح بشكل موثوق. يمكنك تجاوز نصوص البرامج الخاصة بالإنشاء والتشغيل في apphosting.yaml.

يتوفّر مصدر محوّلات Next.js وAngular في firebase-framework-tools.

مدد التشغيل لـ "App Hosting"

بعد أن تنشئ App Hosting تطبيق Node.js وتطرحه، سيتم تشغيله في نسخة Cloud Run. وبناءً على ذلك، يجب أن يكون إصدار وقت التشغيل لتطبيقك ضمن كل من النطاق المتوافق مع Cloud Run ونطاق إطار عمل الويب الذي اخترته. بالنسبة إلى الدعم المسبق الإعداد لكلّ من Angular وNext.js، يعني ذلك أنّ إصدارات Node.js التالية متوافقة:

  • الإصدار 13.5.x من Next.js والإصدارات الأحدث
  • ‫Angular 18.2.x والإصدارات الأحدث
  • الإصدار 20 من Node.js والإصدارات الأحدث

لا يوفّر App Hosting تلقائيًا دعمًا نشطًا لإصدارات إطار العمل التي تم طرحها حديثًا. سيتم اعتبار الإصدارات الأحدث من الإصدار "النشط" المحدّد حاليًا في حالة "معاينة" إلى أن يتم وضع علامة "نشط" عليها رسميًا في App Hosting.

يتيح App Hosting الدعم الطويل الأمد (LTS) لأحدث رقم إصدار ثانوي من إصدار رئيسي لمدة عام واحد من فترة توفّر الدعم الفني، شرط أن يتم التحديث باستمرار إلى أحدث إصدارات التصحيحات ضمن هذا رقم الإصدار الثانوي. يُرجى الرجوع إلى الجداول التالية للحصول على تفاصيل حول Next.js وAngular.

جدول مواعيد توفّر Next.js

الإصدار الحالة الإيقاف النهائي
‫13.5.x lts 2026-10-9
‫14.2.x lts 2026-10-9
‫15.0.x نشطة ليس قبل 2025-10-9
‫15.1.x نشطة ليس قبل 2025-10-9
‫15.2.x نشطة -

جدول دعم Angular

الإصدار الحالة الإيقاف النهائي
‫18.2.x lts 2026-10-9
‫19.0.x نشطة ليس قبل 2025-10-9
‫19.1.x نشطة ليس قبل 2025-10-9
‫19.2.x نشطة -

التحديثات التلقائية للصور الأساسية (ABIU)

تحديثات صور النظام الأساسية التلقائية (ABIU) هي ميزة تطبِّق تلقائيًا حِزم تصحيح الأمان على بيئة وقت التشغيل الأساسية بدون الحاجة إلى بدء طرح جديد للتطبيق.

يتم تلقائيًا تفعيل ABIU للخوادم الخلفية الجديدة، مع استيفاء المتطلبات المحدّدة التالية:App Hosting

  • وقت التشغيل المستند إلى الإصدار: لاستخدام ABIU، يجب تحديد وقت تشغيل مستند إلى إصدار (مثل nodejs20 أو nodejs22 أو nodejs24). يتوافق App Hosting مع إصدارات Node.js ذات الأرقام الزوجية، ما يعكس التوافق مع Cloud Run.
  • التطابق مع package.json: يجب أن يكون إصدار Node الذي تختاره لـ App Hosting متوافقًا مع الإصدار المحدّد في الحقل engines من ملف package.json. في حال عدم التطابق، سيظهر لك خطأ في وقت الإنشاء من Cloud Build. في كل مرة تغيّر فيها الحقل engines، احرص على تعديل وقت التشغيل في الخلفية قبل النشر.

إيقاف ABIU

إذا كنت تريد إيقاف ABIU، يمكنك إيقافها أثناء عملية الإعداد أو من خلال اختيار "لم يتم التحديد" لوقت التشغيل في Firebase console. عند استخدام قيمة nodejs تلقائية بدون إصدار، يتم إيقاف ABIU تلقائيًا.

إدارة إصدارات وقت التشغيل

يمكنك الاطّلاع على إصدار وقت التشغيل وإعدادات ABIU المفضّلة وتغييرها في أي وقت من خلال علامة التبويب الإعدادات في لوحة بيانات App Hosting. ومع ذلك، يُرجى العِلم أنّ تغيير إصدار وقت التشغيل قد يؤدي إلى تعطُّل تطبيقك إذا كان الإصدار الجديد غير متوافق مع الرمز البرمجي.

في النهاية، ينتهي عمر الدعم لإصدارات وقت التشغيل، لذا من المهم إبقاء أوقات التشغيل محدَّثة لتجنُّب حدوث تغييرات غير متوافقة:

  • وقت التشغيل المتوقّف نهائيًا: إذا توقّف وقت التشغيل الذي اخترته نهائيًا، سيستمر تطبيقك في العمل بشكل عام، ولكن ستتلقّى تحذيرًا في وحدة التحكّم، وعليك الانتقال إلى إصدار أحدث في أقرب وقت ممكن. لمزيد من المعلومات، راجِع مستندات Cloud Run حول دورة حياة وقت التشغيل.
  • وقت التشغيل المتوقّف نهائيًا: لا تتوافق أوقات التشغيل المتوقّفة نهائيًا مع أي إصدارات. لن يُسمح لك بإنشاء إصدارات أو أنظمة خلفية جديدة باستخدام إصدار تم إيقافه نهائيًا، وسيؤدي محاولة إجراء ذلك إلى حدوث خطأ في الإصدار. قد تتوقف عمليات النشر الحالية التي تعمل على إصدارات تم إيقافها نهائيًا، ويحتفظ Cloud Run بالحق في حذفها.

للحصول على قائمة كاملة بإصدارات Node المتوافقة والمتوقّفة نهائيًا والتي تم إيقافها، يُرجى الرجوع إلى مستندات Cloud Run Runtime Support. لمزيد من التفاصيل الفنية حول طريقة عمل تحديثات الصورة الأساسية، يُرجى الاطّلاع على مستندات Cloud Run ABIU.

أدوات إدارة الحِزم

تستخدم App Hosting حِزم Cloud Native Buildpacks لتنفيذ عملية تثبيت الموارد الاعتمادية وإنشاء التطبيق باستخدام npm أو yarn أو pnpm، علمًا بأنّ أدوات إدارة الحِزم الأخرى، مثل JSR، غير متوافقة.

NPM

  • NPM هو مدير الحِزم التلقائي.
  • يتم حذف التبعيات غير الإنتاجية بعد اكتمال عملية الإنشاء بنجاح.
  • يمكنك تحديد قسم إصدار npm باستخدام الحقل engines.npm في ملف package.json.

خيط غزل

  • يتم استخدام Yarn بدلاً من ذلك عند تضمين الملف yarn.lock في مشروعك.
  • يمكنك تحديد إصدار Yarn الذي تريد استخدامه في الحقل engines.yarn أو packageManager في ملف package.json.
  • تتوافق App Hosting مع وضع PnP في Yarn2.

Pnpm

  • يتم استخدام Pnpm بدلاً من ذلك عند تضمين الملف pnpm-lock.yaml في مشروعك.
  • يمكنك تحديد إصدار من pnpm في الحقل engines.pnpm أو packageManager في ملف package.json.
  • للاطّلاع على مثال عملي، راجِع sample-node-pnpm. Flood It!‎

مستودعات واحدة لـ App Hosting

يتوافق App Hosting مع التطبيقات المستندة إلى Nx. يمكنك الاطّلاع على استخدام مستودعات التعليمات البرمجية الأحادية مع App Hosting للحصول على إرشادات تفصيلية.

تتوفّر إصدارات Nx التالية:

الإصدار الحالة الإيقاف النهائي
‫19.5.x صيانة 2025-10-9
‫19.6.x صيانة 2025-10-9
‫19.7.x صيانة 2025-10-9
‫19.8.x lts 2026-10-9
‫20.0.x نشطة ليس قبل 2025-10-9
‫20.1.x نشطة ليس قبل 2025-10-9
‫20.2.x نشطة ليس قبل 2025-10-9
‫20.3.x نشطة ليس قبل 2025-10-9
‫20.4.x نشطة ليس قبل 2025-10-9
‫20.5.x نشطة ليس قبل 2025-10-9
‫20.6.x نشطة ليس قبل 2025-10-9
‫20.7.x نشطة

إذا كنت بحاجة إلى دعم لأنواع أخرى من مساحات عمل monorepo، يُرجى إعلامنا بذلك على Firebase UserVoice.