با monorepos، می توانید چندین پروژه را در یک فهرست واحد سازماندهی و مدیریت کنید. این راهنما نحوه شروع استقرار برنامههای مبتنی بر Turborepo یا Nx را با App Hosting توضیح میدهد.
monorepos را با کنسول Firebase مستقر کنید
پشتیبانی Monorepo در جریان راهاندازی باطن گرافیکی در کنسول Firebase تعبیه شده است. هنگامی که از شما خواسته میشود که یک «دایرکتوری ریشه» در زیر «تنظیمات استقرار» ایجاد کنید، مسیر برنامهای را که میخواهید در مونورپو مستقر کنید، مشخص کنید:
monorepos را با Firebase CLI مستقر کنید
پشتیبانی Monorepo در جریان راهاندازی Backend که توسط فرمان Firebase CLI فراخوانی میشود، تعبیه شده است. apphosting:backends:create
. پس از اینکه وارد این جریان شدید و مخزن گیت هاب انتخابی خود را مشخص کردید، از شما خواسته می شود که دایرکتوری ریشه برنامه خود را نسبت به مخزن خود مشخص کنید. در این اعلان، مسیر برنامهای را که میخواهید در مونورپو مستقر کنید ارسال کنید:
$ 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
به عنوان مثال، در اینجا دارایی هایی هستند که با توجه به ساختار پروژه زیر و "هدف-برنامه" به عنوان برنامه ای که می خواهید بسازید و استقرار دهید، مستقر می شوند:
Nx
.
├── libs
├── apps
│ └── target-app
│ ├── project.json
│ └── src
│ └── ...
├── nx.json
├── package-lock.json
└── package.json
توربورپو
.
├── packages
├── apps
│ └── target-app
│ ├── package.json
│ └── src
│ └── ...
├── turbo.json
├── package.json
└── package-lock.json
دایرکتوری اصلی برنامه نسبت به مخزن شما apps/target-app
است.
عیب یابی استقرار monorepo
- اگر فیلد «دایرکتوری ریشه» را برای Nx مشخص نکنید، بیلد با شکست مواجه میشود و پیامی نشان میدهد که App Hosting نمیتواند پروژهای را برای هدفگیری در Nx monorepo پیدا کند. به طور مشابه، کاربران Turborepo باید یک فهرست برنامه هدف را مشخص کنند زیرا هیچ مفهومی از پروژه پیش فرض در Turborepo وجود ندارد.
- برای برنامه های Nx + Angular، باید از برنامه ساز Angular برای ساخت برنامه استفاده کنید. سازنده برنامه Angular در
project.json
مشخص شده است