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