בעזרת מאגרי קוד יחידים, אתם יכולים לארגן ולנהל כמה פרויקטים בספרייה אחת. במדריך הזה מוסבר איך מתחילים לפרוס אפליקציות מבוססות Turborepo או Nx באמצעות App Hosting.
פריסת מאגרי קוד מונו עם מסוף Firebase
התמיכה ב-monorepo מוטמעת בתהליך ההגדרה של העורף הגרפי במסוף Firebase. כשמתבקשים להזין 'תיקיית שורש' בקטע 'הגדרות פריסה': מציינים את הנתיב לאפליקציה שרוצים לפרוס בתוך המאגר המשותף:

פריסת מאגרי קוד מונו עם Firebase CLI
התמיכה ב-monorepo מוטמעת בתהליך ההגדרה של ה-backend שמופעל על ידי פקודת Firebase CLI 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.
פתרון בעיות בפריסת monorepo
- אם לא מציינים את השדה root directory (ספריית הבסיס) עבור Nx, הבנייה תיכשל ותוצג הודעה שבה מצוין שלא ניתן למצוא פרויקט לטירגוט בתוך מאגר Nx.App Hosting באופן דומה, משתמשי Turborepo צריכים לציין ספריית אפליקציות יעד כי אין מושג של פרויקט ברירת מחדל ב-Turborepo.
- באפליקציות Nx + Angular, צריך להשתמש בכלי ליצירת אפליקציות Angular כדי ליצור את האפליקציה. ה-builder של אפליקציית Angular מצוין ב-
project.json