ใช้ monorepos กับโฮสติ้งแอป

การใช้ monorepos จะช่วยจัดระเบียบและจัดการหลายโปรเจ็กต์ได้ในครั้งเดียว ไดเรกทอรี คู่มือนี้จะอธิบายวิธีเริ่มทำให้แอปที่ใช้ Nx ใช้งานได้ด้วย โฮสติ้งแอป

ทำให้ monorepos ใช้งานได้ด้วย Firebase CLI

การรองรับ Monorepo มีอยู่ในขั้นตอนการตั้งค่าแบ็กเอนด์ที่ Firebase เรียกใช้ คำสั่ง CLI apphosting:backends:create หลังจากคุณป้อนขั้นตอนนี้และระบุ ที่เก็บ GitHub ที่คุณเลือก ระบบจะแจ้งให้คุณระบุรูทของแอป ไดเรกทอรีที่เกี่ยวข้องกับที่เก็บของคุณ ที่พรอมต์นี้ ให้ส่งเส้นทางไปยัง ที่คุณต้องการติดตั้งใช้งานภายใน monorepo

$ 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 โครงสร้างโครงการและ "แอปเป้าหมาย" เป็นแอปพลิเคชันที่คุณต้องการสร้างและ ทำให้ใช้งานได้:

.
    ├── lib
    ├── apps
    │   └── target-app
    │       ├── project.json
    │       └── src
    │           └── ...
    ├── nx.json
    ├── package-lock.json
    └── package.json

ไดเรกทอรีรากของแอปที่สัมพันธ์กับที่เก็บของคุณคือ apps/target-app

ทำให้ monorepos ใช้งานได้ด้วยคอนโซล Firebase

การสนับสนุน Monorepo มีอยู่ในขั้นตอนการตั้งค่าแบ็กเอนด์แบบกราฟิกใน Firebase คอนโซลผู้ดูแลระบบ เมื่อมีข้อความแจ้งให้ระบุ "ไดเรกทอรีราก" ในส่วน "การตั้งค่าการทำให้ใช้งานได้" ระบุเส้นทางไปยังแอปพลิเคชันที่คุณต้องการทำให้ใช้งานได้ภายใน Monorepo ดังนี้

ภาพหน้าจอของมุมมองการสร้างแบ็กเอนด์ของคอนโซล

การแก้ปัญหาการติดตั้งใช้งาน Monorepo

  • ถ้าคุณออกจาก "ไดเรกทอรีราก" ฟิลด์ว่างเปล่าระหว่างการตั้งค่าแบ็กเอนด์, แอป โฮสติ้งอาจยังสร้างและติดตั้งใช้งานโปรเจ็กต์เป้าหมายของผู้ใช้ได้ในกรณีต่อไปนี้ มีการระบุไว้ใน defaultProject ของ nx.json ที่เกี่ยวข้อง การกำหนดค่า
  • หากคุณไม่ระบุทั้ง "ไดเรกทอรีราก" ฟิลด์หรือ defaultProject บิลด์ดังกล่าวจะล้มเหลวและแสดงข้อความว่า App Hosting ไม่พบโปรเจ็กต์ที่จะกำหนดเป้าหมายภายใน Nx monorepo
  • สำหรับแอปพลิเคชัน Nx + Angular คุณต้องใช้แอปพลิเคชัน Angular เพื่อสร้างแอปพลิเคชัน ระบุเครื่องมือสร้างแอปพลิเคชัน Angular ใน project.json