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

نشر مستودعات التعليمات البرمجية الأحادية باستخدام واجهة سطر الأوامر Firebase
تتوفّر ميزة استخدام مستودع واحد في عملية إعداد الخلفية التي يتم تفعيلها من خلال الأمر Firebase في واجهة سطر الأوامر apphosting:backends:create. بعد إدخال هذا المسار وتحديد مستودع 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