استخدام المستودع الأحادي مع "استضافة التطبيقات"

باستخدام المستودعات الأحادية، يمكنك تنظيم وإدارة مشاريع متعددة في دليل واحد. يوضّح هذا الدليل كيفية بدء نشر التطبيقات المستندة إلى Turborepo أو Nx باستخدام App Hosting.

نشر المستودعات الأحادية باستخدام وحدة تحكّم Firebase

يتوفّر دعم المستودع الواحد في عملية إعداد الخلفية الرسومية في وحدة تحكّم Firebase. عندما يُطلب منك تحديد "دليل جذر" ضمن "إعدادات النشر"، حدِّد مسار التطبيق الذي تريد نشره داخل المستودع الواحد:

لقطة شاشة لطريقة عرض إنشاء الخلفية في وحدة التحكّم

نشر المستودعات الأحادية باستخدام واجهة سطر الأوامر في Firebase

يتوفّر دعم المستودع الواحد في عملية إعداد الخلفية التي يتم استدعاؤها من خلال أمر واجهة سطر الأوامر (CLI) apphosting:backends:create في Firebase. بعد الدخول إلى هذا المسار وتحديد مستودع GitHub الذي اخترته، سيُطلب منك تحديد الدليل الجذري لتطبيقك بالنسبة إلى مستودعك. في هذا الطلب، أدخِل المسار إلى التطبيق الذي تريد نشره داخل المستودع الواحد:

$ firebase apphosting:backends:create --project [project-name]
i  === Import a GitHub repository
✔  Connected with GitHub successfully

? Which GitHub repo do you want to deploy? gh-username/nx-monorepo
? Specify your app's root directory relative to your repository path/to/app

على سبيل المثال، في ما يلي مواد العرض التي سيتم نشرها بناءً على بنية المشروع التالية و "target-app" كتطبيق تريد إنشاءه ونشره:

Nx

.
    ├── libs
    ├── apps
    │   └── target-app
    │       ├── project.json
    │       └── src
    │           └── ...
    ├── nx.json
    ├── package-lock.json
    └── package.json

Turborepo

.
    ├── packages
    ├── apps
    │   └── target-app
    │       ├── package.json
    │       └── src
    │           └── ...
    ├── turbo.json
    ├── package.json
    └── package-lock.json

الدليل الجذري للتطبيق بالنسبة إلى المستودع هو apps/target-app.

تحديد مشاكل نشر المستودع الواحد وحلّها

  • إذا لم تحدّد حقل "الدليل الجذري" لـ Nx، ستتعذّر عملية الإنشاء وستظهر رسالة تفيد بأنّ App Hosting لا يمكنه العثور على مشروع مستهدَف داخل مستودع Nx الواحد. وبالمثل، يجب على مستخدمي Turborepo تحديد دليل التطبيق المستهدف لأنه لا يوجد مفهوم للمشروع الافتراضي في Turborepo.
  • بالنسبة إلى تطبيقات Nx + Angular، يجب استخدام نظام إنشاء تطبيقات Angular لإنشاء التطبيق. يتم تحديد أداة إنشاء تطبيقات Angular في project.json.