部署目標是 Firebase 專案中 Firebase 資源的短名稱識別碼 (由您自行定義),例如具有獨特靜態資產的 Hosting 網站,或是共用相同安全性規則的一組 Realtime Database 例項。
如果您有多個 Hosting 網站、多個 Cloud Storage 桶,或多個 Realtime Database 例項,部署目標就非常實用。透過部署目標,Firebase CLI 可將設定部署至專案中的特定 Firebase 資源或資源群組,例如:
- 每個 Hosting 網站的代管設定
- 每個 Hosting 網站的專案目錄中的靜態素材資源
- 多個 Realtime Database 執行個體或多個 Cloud Storage 資料夾共用的安全性規則
如要設定部署目標,請按照下列步驟操作:
- 將 TARGET_NAME套用至指定的 Firebase 資源或 Firebase 資源群組。
- 在 firebase.json檔案中,參照相關的TARGET_NAME,設定每個資源或資源群組的設定。
執行 Firebase CLI 指令 (例如 firebase deploy) 時,Firebase CLI 會將每個 TARGET_NAME 與其相關聯的 Firebase 資源配對。接著,CLI 會將每項資源的設定傳送至 Firebase 專案。
為 Firebase 資源設定部署目標
使用 Firebase CLI,將 TARGET_NAME (您自行定義的簡短名稱 ID) 套用至 Firebase 資源或一組 Firebase 資源。Firebase 支援下列項目的部署目標:
部署目標的設定會儲存在專案目錄中的 .firebaserc 檔案中,因此每個專案只需設定一次部署目標。
為 Hosting 設定部署目標
如要建立部署目標,並將 TARGET_NAME 套用至 Hosting 網站,請執行下列 CLI 指令:
firebase target:apply TYPE TARGET_NAME RESOURCE_IDENTIFIER
其中參數如下:
- TYPE:相關的 Firebase 資源類型 - 如果是 Firebase Hosting 網站,請使用 hosting。
 
- 如果是 Firebase Hosting 網站,請使用 
- TARGET_NAME:您要部署至 Hosting 網站的專屬名稱 
- RESOURCE_IDENTIFIER:Hosting 網站的 - SITE_ID,如在 Firebase 專案中列出
舉例來說,如果您在 Firebase 專案中建立了兩個網站 (myapp-blog 和 myapp-app),就可以執行下列指令,為每個網站套用專屬的 TARGET_NAME (分別為 blog 和 app):
firebase target:apply hosting blog myapp-blog
firebase target:apply hosting app myapp-app
為 Cloud Storage 或 Realtime Database 設定部署目標
如要建立部署目標,並將 TARGET_NAME 套用至一組 Cloud Storage 或 Realtime Database 資源,請執行下列指令列指令:
firebase target:apply TYPE TARGET_NAME RESOURCE-1_IDENTIFIER RESOURCE-2_IDENTIFIER ...
其中參數如下:
- TYPE:相關的 Firebase 資源類型 - 針對 Cloud Storage 值區,請使用 storage。
- 針對 Realtime Database 例項,請使用 database。
 
- 針對 Cloud Storage 值區,請使用 
- TARGET_NAME:共用安全性規則的資源或資源群組專屬名稱 
- RESOURCE_IDENTIFIER:在 Firebase 專案中列出的資源 ID (例如儲存體值區名稱或資料庫執行個體 ID),這些資源都共用相同的安全性規則 
舉例來說,您可以執行下列指令,將 main 的 TARGET_NAME 套用至一組三個區域 Cloud Storage 桶 (皆共用相同安全性規則):
firebase target:apply storage main myproject.firebasestorage.app myproject-eu myproject-ja
請注意,myproject.firebasestorage.app 是預設值區的 ID,而 myproject-eu 和 myproject-ja 則是 Firebase 專案中建立的兩個額外值區。
設定 firebase.json 檔案以使用部署目標
為 Firebase 資源設定部署目標後,請在 firebase.json 設定檔中參照每個已套用的 TARGET_NAME:
- 為每個 Firebase 資源 TYPE(hosting、storage或database) 建立設定物件陣列。
- 在陣列中指定 target(使用TARGET_NAME),並為相關聯的 Firebase 資源或資源群組定義設定。
接著,繼續使用上述範例,假設您的 Firebase 專案有兩個 Hosting 網站和三個 Cloud Storage 儲存體 (共用相同的安全性規則),您的 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
    }
  ]
}
{
  "storage": [ {
      "target": "main",  // "main" is the applied TARGET_NAME for the group of Cloud Storage buckets
      "rules": "storage.main.rules"  // the file that contains the shared security rules
    }
  ]
}如果資源有多個設定,您可以建立多個部署目標,並在 firebase.json 檔案中指定每個目標。執行 firebase deploy 時,所有相關聯的資源都會一併部署。
管理部署目標
部署目標的設定會儲存在專案目錄中的 .firebaserc 檔案中。您可以從專案目錄根目錄執行下列任一指令,管理專案的部署目標。
| 指令 | 說明 | 
|---|---|
| firebase target | 列出目前專案目錄的部署目標 | 
| firebase target:remove \ | 從已指派資源的目標中移除資源 | 
| firebase target:clear \ | 從指定目標移除所有資源或 Hosting 網站 | 
target:remove 和 target:clear 指令會自動更新專案目錄中 .firebaserc 檔案中的部署目標設定。
部署前先在本機測試
從專案目錄的根目錄執行下列任一指令。
| 指令 | 說明 | 
|---|---|
| firebase emulators:start | 模擬專案目錄中所有已設定的資源 | 
| firebase emulators:start \ | 只模擬指定 Hosting 網站的 Hosting 內容和設定 | 
| firebase emulators:start \ | 只模擬指定 Cloud Storage 目標的規則檔案 | 
| firebase emulators:start \ | 只模擬指定 Realtime Database 目標的規則檔案 | 
進一步瞭解如何設定及使用 Firebase Local Emulator Suite。
部署特定 Firebase 資源
從專案目錄的根目錄執行下列任一指令。
| 指令 | 說明 | 
|---|---|
| firebase deploy | 建立專案目錄中所有可部署資源的版本 | 
| firebase deploy \ | 只將指定 Hosting 網站的 Hosting 內容和設定部署至該網站的直播頻道 | 
| firebase hosting:channel:deploy CHANNEL_ID \ | 只將指定 Hosting 網站的 Hosting 內容和設定部署至該網站的預覽頻道 | 
| firebase deploy \ | 只部署指定 Cloud Storage 目標的規則檔案 | 
| firebase deploy \ | 只部署指定 Realtime Database 目標的規則檔案 |