您可以在單一 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 具有以下要求:
- 必須是有效的主機名稱標籤,這意味著它不能包含
.
,_
, ETC。 - 不得超過 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-blog
和myapp-app
),則可以透過執行下列指令將唯一的TARGET_NAME
(分別為blog
和app
)套用到每個網站:
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 \ | 在預覽 URL 部署預設託管網站的託管內容和配置 |
firebase hosting:channel:deploy \ | 在預覽 URL 部署指定託管網站的託管內容和配置 |
firebase deploy --only hosting | 將託管內容和配置部署到firebase.json 中配置的所有託管網站的即時頻道 |
firebase deploy --only hosting: TARGET_NAME | 將託管內容和配置部署到指定託管網站的直播頻道 |
命令 | 描述 |
---|---|
(不推薦;使用emulators:start 代替)firebase serve --only hosting | 在本機託管 URL 上提供預設託管網站的託管內容和配置 |
(不推薦;使用emulators:start 代替)firebase serve --only hosting: TARGET_NAME | 在本機託管 URL 上提供指定託管網站的託管內容和配置 |