跨多個站點共享項目資源

您可以在單個 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 上提供指定託管站點的託管內容和配置