שימוש במונורפוס עם אירוח אפליקציות

בעזרת מאגרים מונוליתיים אפשר לארגן ולנהל כמה פרויקטים בספרייה אחת. במדריך הזה מוסבר איך מתחילים לפרוס אפליקציות מבוססות-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