Chia sẻ tài nguyên dự án trên nhiều trang web

Bạn có thể thiết lập một hoặc nhiều trang web Firebase Hosting trong một dự án Firebase. Vì tất cả các trang web đều nằm trong cùng một dự án Firebase, nên tất cả các trang web đều có thể truy cập vào các tài nguyên Firebase khác của dự án.

Bằng cách thiết lập nhiều trang web Hosting trong cùng một dự án Firebase, bạn có thể dễ dàng chia sẻ tài nguyên Firebase giữa các trang web và ứng dụng có liên quan. Ví dụ: nếu bạn thiết lập blog, bảng điều khiển quản trị và ứng dụng công khai dưới dạng các trang web riêng lẻ trong cùng một dự án Firebase, thì tất cả các trang web này đều có thể chia sẻ cùng một cơ sở dữ liệu người dùng Firebase Authentication, đồng thời có các miền hoặc nội dung riêng biệt.

Bước 1: Cập nhật phiên bản CLI Firebase

Sử dụng các tính năng Firebase Hosting mới nhất bằng cách cập nhật lên phiên bản mới nhất của CLI Firebase.

Bước 2: Thêm các trang web khác

Thêm các trang web khác vào dự án Firebase bằng một trong các phương thức sau:

  • Sử dụng quy trình công việc trong trang Hosting của bảng điều khiển Firebase

  • Sử dụng lệnh CLI Firebase: firebase hosting:sites:create SITE_ID

  • Sử dụng API REST Hosting: projects.sites.create

Đối với mỗi phương thức này, bạn sẽ chỉ định một SITE_ID dùng để tạo các miền con mặc định do Firebase cung cấp cho trang web:

  • SITE_ID.web.app
  • SITE_ID.firebaseapp.com

SITE_ID được dùng cho các URL này, nên mã nhận dạng trang web có các yêu cầu sau:

  • Phải là nhãn tên máy chủ hợp lệ, nghĩa là không được chứa ., _, v.v.
  • Không được vượt quá 30 ký tự
  • Phải là duy nhất trên toàn hệ thống trong Firebase

Đối với mỗi trang web, bạn cũng có thể tuỳ ý thêm miền tuỳ chỉnh để phân phát cùng một nội dung và cấu hình cho nhiều URL.

Xoá trang web phụ

Xoá các trang web không mong muốn khỏi dự án Firebase bằng một trong các phương thức sau:

  • Sử dụng quy trình công việc trong trang Hosting của bảng điều khiển Firebase

  • Sử dụng lệnh CLI Firebase: firebase hosting:sites:delete SITE_ID

  • Sử dụng API REST Hosting: projects.sites.delete

Xin lưu ý rằng bạn không thể xoá trang web mặc định, trang web này có cùng SITE_ID với mã dự án Firebase của bạn.

Bước 3: Thiết lập mục tiêu triển khai cho trang web

Khi bạn có nhiều trang web và chạy các lệnh triển khai CLI Firebase, CLI cần có cách để thông báo chế độ cài đặt nào sẽ được triển khai cho từng trang web. Với mục tiêu triển khai, bạn có thể xác định duy nhất một trang web cụ thể bằng TARGET_NAME trong tệp cấu hình firebase.json và trong các lệnh CLI Firebase để kiểm thử hoặc triển khai cho các trang web của bạn.

Để tạo mục tiêu triển khai và áp dụng TARGET_NAME cho trang web Hosting, hãy chạy lệnh CLI sau từ thư mục gốc của dự án:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

Trong đó các tham số là:

  • TARGET_NAME – một tên duy nhất (do bạn tự xác định) cho trang web Hosting mà bạn đang triển khai

  • RESOURCE_IDENTIFIERSITE_ID cho trang web Hosting như đã liệt kê trong dự án Firebase của bạn

Ví dụ: nếu đã tạo hai trang web (myapp-blogmyapp-app) trong dự án Firebase, bạn có thể áp dụng một TARGET_NAME duy nhất (tương ứng là blogapp) cho từng trang web bằng cách chạy các lệnh sau:

firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app

Các chế độ cài đặt cho mục tiêu triển khai được lưu trữ trong tệp .firebaserc trong thư mục dự án, vì vậy, bạn chỉ cần thiết lập mục tiêu triển khai một lần cho mỗi dự án.

Bước 4: Xác định cấu hình lưu trữ cho từng trang web

Sử dụng TARGET_NAME đã áp dụng của trang web khi bạn xác định cấu hình lưu trữ của trang web đó trong tệp firebase.json.

  • Nếu tệp firebase.json xác định cấu hình cho nhiều trang web, hãy sử dụng định dạng mảng:

    {
      "hosting": [ {
          "target": "blog",  // "blog" is the applied TARGET_NAME for the Hosting site "myapp-blog"
          "public": "blog/dist",  // contents of this folder are deployed to the site "myapp-blog"
    
          // ...
        },
        {
          "target": "app",  // "app" is the applied TARGET_NAME for the Hosting site "myapp-app"
          "public": "app/dist",  // contents of this folder are deployed to the site "myapp-app"
    
          // ...
    
          "rewrites": [...]  // You can define specific Hosting configurations for each site
        }
      ]
    }
  • Nếu tệp firebase.json chỉ xác định cấu hình cho một trang web, bạn không cần sử dụng định dạng mảng:

    {
      "hosting": {
          "target": "blog",
          "public": "dist",
    
          // ...
    
          "rewrites": [...]
      }
    }

Bước 5: Thử nghiệm cục bộ, xem trước các thay đổi và triển khai cho trang web

Chạy bất kỳ lệnh nào sau đây từ thư mục gốc của dự án cục bộ.

Lệnh Nội dung mô tả
firebase emulators:start --only hosting Mô phỏng nội dung và cấu hình của trang web Hosting mặc định tại một URL được lưu trữ cục bộHosting
firebase emulators:start --only hosting:TARGET_NAME Mô phỏng nội dung và cấu hình Hosting của trang web Hosting được chỉ định tại một URL được lưu trữ cục bộ
firebase hosting:channel:deploy \
CHANNEL_ID
Triển khai nội dung và cấu hình Hosting của trang web Hosting mặc định tại một URL xem trước
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
Triển khai nội dung và cấu hình Hosting của trang web Hosting đã chỉ định tại một URL xem trước
firebase deploy --only hosting Triển khai nội dung và cấu hình Hosting cho kênh phát trực tiếp của tất cả trang web Hosting được định cấu hình trong firebase.json
firebase deploy --only hosting:TARGET_NAME Triển khai nội dung và cấu hình Hosting cho kênh phát trực tiếp của trang web Hosting đã chỉ định
Lệnh Nội dung mô tả
(không nên dùng; hãy dùng emulators:start)
firebase serve --only hosting
Phân phát nội dung và cấu hình Hosting của trang web Hosting mặc định tại một URL được lưu trữ cục bộ
(không nên dùng; hãy dùng emulators:start)
firebase serve --only hosting:TARGET_NAME
Phân phát nội dung và cấu hình Hosting của trang web Hosting được chỉ định tại một URL được lưu trữ cục bộ