Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

跨多個站點共享項目資源

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