跨多個站點共享項目資源

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

  • 每個站點都有自己的主機配置
  • 每個站點都擁有自己的內容集合。
  • 每個站點可以有一個或多個相關領域

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

第1步:更新你的火力地堡CLI版本

訪問最新的火力地堡由託管功能更新到火力地堡CLI的最新版本

第2步:添加其他網站

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

  • 使用工作流在主機頁面的火力地堡控制台

  • 使用火力地堡CLI命令: firebase hosting:sites:create SITE_ID

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

對於這些方法,你會指定一個SITE_ID其用於構建該站點的火力地堡置備的默認子域:

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

因為SITE_ID用於這些網址,該網站ID有以下要求:

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

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

刪除輔助站點

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

  • 使用工作流在主機頁面的火力地堡控制台

  • 使用火力地堡CLI命令: firebase hosting:sites:delete SITE_ID

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

請注意,您不能刪除默認的站點,它具有相同的SITE_ID為您的火力地堡項目ID。

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

當您有多個站點並運行 Firebase CLI 部署命令時,CLI 需要一種方式來傳達應將哪些設置部署到每個站點。隨著部署的目標,你可以唯一地標識一個特定的網站TARGET_NAMEfirebase.json配置文件,並在你的火力地堡CLI命令用於測試或部署到您的網站。

要創建一個部署目標和應用TARGET_NAME到託管網站,請從你的項目目錄的根目錄下面的CLI命令:

firebase target:apply hosting TARGET_NAME RESOURCE_IDENTIFIER

其中參數是:

  • TARGET_NAME -一個獨特的名字(你已經自己定義)的託管網站,你要部署

  • RESOURCE_IDENTIFIER -的SITE_ID在您的火力地堡項目列出的託管網站

舉例來說,如果你已經創建了兩個站點( myapp-blogmyapp-app在你的火力地堡的項目),你可以申請一個獨特的TARGET_NAMEblogapp運行以下命令分別),以每個站點:

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

對於部署目標的設置存儲在.firebaserc在項目目錄中的文件,所以你只需要設置部署目標,每個項目一次。

第4步:定義主機配置為每個站點

使用網站的應用TARGET_NAME當你在確定其主機配置firebase.json文件。

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