בעזרת מאגרי קוד יחידים, אפשר לארגן ולנהל כמה פרויקטים בספרייה אחת. במדריך הזה מוסבר איך מתחילים לפרוס אפליקציות מבוססות Nx באמצעות App Hosting.
פריסת מאגרי קוד מונו עם מסוף Firebase
התמיכה ב-monorepo מוטמעת בתהליך ההגדרה של העורף הגרפי ב-Firebase Console. כשמתבקשים לציין 'תיקיית שורש' בקטע 'הגדרות פריסה': מציינים את הנתיב לאפליקציה שרוצים לפרוס בתוך המאגר המשותף:
פריסת מאגרי קוד מונו עם 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
לדוגמה, אלה הנכסים שיפרסו בהינתן מבנה הפרויקט הבא של Nx והאפליקציה target-app שרוצים ליצור ולפרוס:
.
├── lib
├── apps
│ └── target-app
│ ├── project.json
│ └── src
│ └── ...
├── nx.json
├── package-lock.json
└── package.json
ספריית הבסיס של האפליקציה ביחס למאגר היא apps/target-app
.
פתרון בעיות בפריסת monorepo
- אם משאירים את השדה 'ספריית הבסיס' ריק במהלך הגדרת ה-Backend, יכול להיות ש-App Hosting עדיין יוכל ליצור ולפרוס את פרויקט היעד של המשתמש אם הוא מצוין ב-
defaultProject
של קובץ ההגדרות nx.json שקשור אליו. - אם לא מציינים את השדה root directory (ספריית הבסיס) ולא
defaultProject
, ה-build ייכשל ותוצג הודעה ש-App Hosting לא יכול למצוא פרויקט לטירגוט בתוך ה-monorepo של Nx. - באפליקציות Nx + Angular, צריך להשתמש בכלי ליצירת אפליקציות Angular כדי ליצור את האפליקציה. הכלי ליצירת אפליקציות Angular מוגדר ב-
project.json