בעזרת מאגרים מונוליתיים אפשר לארגן ולנהל כמה פרויקטים בספרייה אחת. במדריך הזה מוסבר איך מתחילים לפרוס אפליקציות מבוססות-Nx באמצעות App Hosting.
פריסה של מאגרים מונוליתיים באמצעות Firebase CLI
התמיכה במונוrepo מובנית בתהליך ההגדרה בקצה העורפי שמופעל על ידי הפקודה apphosting:backends:create
של Firebase CLI. אחרי שמזינים את התהליך הזה ומציינים את המאגר שבחרתם ב-GitHub, מופיעה בקשה לציין את תיקיית השורש של האפליקציה ביחס למאגר. בשלב הזה, מעבירים את הנתיב לאפליקציה שרוצים לפרוס בתוך המאגר המאוחד:
$ firebase apphosting:backends:create --project [project-name] --location us-central1
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
.
פריסת מאגרים מונוליתיים באמצעות מסוף Firebase
התמיכה ב-Monorepo מובנית בתהליך הגדרת הקצה העורפי הגרפי במסוף Firebase. כשמוצגת בקשה להזנת 'Root directory' בקטע 'Deployment settings', מציינים את הנתיב לאפליקציה שרוצים לפרוס בתוך ה-monorepo:
פתרון בעיות בפריסה של monorepo
- אם משאירים את השדה 'ספריית root' ריק במהלך הגדרת הקצה העורפי, יכול להיות ש-App Hosting עדיין תוכל ליצור ולפרוס את פרויקט היעד של המשתמש אם הוא מצוין ב-
defaultProject
של קובץ התצורה nx.json הרלוונטי. - אם לא מציינים את השדה root directory או את הערך
defaultProject
, ה-build ייכשל ותופיע הודעה על כך ש-App Hosting לא מצליח למצוא פרויקט לטירגוט ב-monorepo של Nx. - באפליקציות Nx + Angular, צריך להשתמש ב-Angular application builder כדי ליצור את האפליקציה. ה-builder של אפליקציות Angular מצוין ב-
project.json