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

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

ทำให้ Monorepo ใช้งานได้ด้วย Firebase Console

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

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

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

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

$ 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 ใช้งานได้

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