Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

跨多個站點共享項目資源

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

您可以在單個 Firebase 項目中設置一個或多個 Firebase 託管站點。由於站點都在同一個 Firebase 項目中,因此所有站點都可以訪問該項目的其他 Firebase 資源。

  • 每個站點都有自己的託管配置
  • 每個站點都有自己的內容集合。
  • 每個站點可以有一個或多個關聯域

通過在同一個 Firebase 項目中設置多個託管站點,您可以更輕鬆地在相關站點和應用之間共享 Firebase 資源。例如,如果您將博客、管理面板和公共應用程序設置為同一個 Firebase 項目中的單個站點,則它們都可以共享同一個 Firebase 身份驗證用戶數據庫,同時還擁有自己獨特的域或內容。

第 1 步:更新您的 Firebase CLI 版本

通過更新到最新版本的 Firebase CLI 來訪問最新的Firebase 託管功能。

第 2 步:添加其他網站

使用以下方法之一將其他網站添加到 Firebase 項目:

  • 使用 Firebase 控制台託管頁面中的工作流程

  • 使用 Firebase CLI 命令: firebase hosting:sites:create SITE_ID

  • 使用託管 REST API: projects.sites.create

對於這些方法中的每一種,您都需要指定一個SITE_ID ,它用於為站點構建 Firebase 配置的默認子域:

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

由於SITE_ID用於這些 URL,因此站點 ID 具有以下要求:

  • 必須是有效的主機名標籤,這意味著它不能包含. , _
  • 不得超過 30 個字符
  • 在 Firebase 中必須是全局唯一的

對於每個站點,您還可以選擇添加自定義域以向多個 URL 提供相同的內容和配置。

刪除輔助站點

使用以下方法之一從 Firebase 項目中刪除不需要的網站:

  • 使用 Firebase 控制台託管頁面中的工作流程

  • 使用 Firebase CLI 命令: firebase hosting:sites:delete SITE_ID

  • 使用託管 REST API: projects.sites.delete

請注意,您無法刪除與您的 Firebase 項目 ID 具有相同SITE_ID的默認站點。

第 3 步:為您的站點設置部署目標

當您有多個站點並運行 Firebase CLI 部署命令時,CLI 需要一種方式來傳達應將哪些設置部署到每個站點。使用部署目標,您可以在firebase.json配置文件Firebase CLI 命令中使用TARGET_NAME唯一標識特定站點,以測試或部署到您的站點。

要創建部署目標並將TARGET_NAME應用於託管站點,請從項目目錄的根目錄運行以下 CLI 命令:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

其中參數是:

  • TARGET_NAME — 您要部署到的託管站點的唯一名稱(您自己定義)

  • RESOURCE_IDENTIFIER您的 Firebase 項目中列出的託管站點的SITE_ID

例如,如果您在 Firebase 項目中創建了兩個站點( myapp-blogmyapp-app ),則可以通過運行以下命令將唯一的TARGET_NAME (分別為blogapp )應用於每個站點:

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

部署目標的設置存儲在項目目錄的.firebaserc文件中,因此您只需為每個項目設置一次部署目標。

第 4 步:定義每個站點的託管配置

當您在firebase.json文件中定義其託管配置時,請使用站點應用的TARGET_NAME

  • 如果您的firebase.json文件定義了多個站點的配置,請使用數組格式:

    {
      "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
        }
      ]
    }
    
  • 如果您的firebase.json文件僅定義了一個站點的配置,則不必使用數組格式:

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

第 5 步:在本地測試、預覽更改並部署到您的站點

從本地項目目錄的根目錄運行以下任何命令。

命令描述
firebase emulators:start --only hosting在本地託管的 URL 模擬默認託管站點的託管內容和配置
firebase emulators:start --only hosting: TARGET_NAME在本地託管的 URL 模擬指定託管站點的託管內容和配置
firebase hosting:channel:deploy \
CHANNEL_ID
在預覽 URL 上部署默認託管站點的託管內容和配置
firebase hosting:channel:deploy \
CHANNEL_ID --only TARGET_NAME
在預覽 URL 上部署指定託管站點的託管內容和配置
firebase deploy --only hosting將 Hosting 內容和配置部署到firebase.json中配置的所有Hosting 站點的直播頻道
firebase deploy --only hosting: TARGET_NAME將託管內容和配置部署到指定託管站點的直播頻道
命令描述
(不推薦;使用emulators:start代替)
firebase serve --only hosting
在本地託管的 URL 上提供默認託管站點的託管內容和配置
(不推薦;使用emulators:start代替)
firebase serve --only hosting: TARGET_NAME
在本地託管的 URL 上提供指定託管站點的託管內容和配置