Firexport指南

如何匯出 Firestore 安全性規則和索引

Firebase 控制台會在編輯器中顯示 Firestore 的安全性規則,在表格中顯示索引,卻沒有把兩者存成檔案的按鈕。Firebase CLI 部署的檔案是 firestore.rules 和 firestore.indexes.json。要取得它們,有三種方法。哪一種合適,取決於你是否從專案資料夾部署,以及你需要哪個版本的規則。

更新於 2026年10月27日。 方法 1 中的擴充功能 Firexport 是我們開發的。方法 2 和 3 不需要它。

簡短回答

  • 不用 CLI,直接從控制台把規則或索引存成檔案: 用瀏覽器擴充功能從規則(Rules)和索引(Indexes)分頁匯出。 方法 1
  • 要放進用 firebase deploy 部署的專案資料夾: 執行 firebase init firestore,或 firebase firestore:indexes。 方法 2
  • 只要規則,而且只要一次: 從規則(Rules)分頁複製。 方法 3
1. 控制台 + 擴充功能2. Firebase CLI3. 從控制台複製
準備工作安裝一個 Chrome 擴充功能Node.js 和 Firebase CLI不需要
規則firestore.rules,免費firestore.rules貼到檔案中
舊版本和草稿可以,以編輯器顯示的為準不行,只有最新發布的規則可以
索引表格存成 JSON,免費。Advanced 為 firestore.indexes.jsonfirestore.indexes.json不行

1. 用 Firexport 從 Firebase 控制台匯出

Firexport 是一款免費的 Chrome 擴充功能,會在 Firestore 的規則(Rules)和索引(Indexes)分頁加入匯出按鈕。不需要另外登入,也不會從你的資料庫讀取任何內容:Firexport 儲存的是控制台已經顯示的內容。

安全性規則

  1. 從 Chrome 線上應用程式商店安裝 Firexport。
  2. 在 Firebase 控制台開啟 Firestore Database > 規則(Rules)。
  3. 要匯出舊版本,請在左側清單中選擇它。編輯器中尚未發布的變更會照目前的樣子匯出。
  4. 按一下匯出,它在編輯器上方那一列的右端。Firexport 會把編輯器中的文字存成 firestore.rules。

檔案的內容與編輯器中的內容逐位元組完全相同,連註解和空白行都包括在內。匯出規則在所有方案中都免費。

Firebase 控制台中 Firestore 的規則(Rules)分頁,左側是過去的版本,規則編輯器上方是 Firexport 加入的「匯出」按鈕
「匯出」位於編輯器上方,會儲存你在左側選擇的版本。

索引

  1. 開啟 Firestore Database > 索引(Indexes)。
  2. 按一下匯出,它就在新增索引(Add index)旁邊。
  • 在免費版中,Firexport 會把你正在查看的表格存成 JSON,而且包含每一頁:在手動(Manual)下是複合式索引,在自動(Automatic)下是單一欄位豁免項目。這是控制台所顯示的表格,所以 firebase deploy 無法讀取它,檔名也不是 firestore.indexes.json。
  • 使用 Advanced 時,Firexport 會儲存 firestore.indexes.json:無論顯示的是哪個表格,複合式索引和欄位覆寫都會一起寫入,格式與 firebase firestore:indexes 輸出的相同。若是具名資料庫,檔名為 firestore.<database>.indexes.json。
  • 與 CLI 產生的檔案有一點不同:設有 TTL 政策但沒有索引豁免的欄位不會出現在其中,因為控制台不會載入這些欄位。
Firebase 控制台中 Firestore 的索引(Indexes)分頁列出複合式索引,新增索引(Add index)旁邊是 Firexport 加入的「匯出」按鈕
「匯出」位於新增索引(Add index)旁邊。翻動表格的頁面不會從你的資料庫讀取任何內容。

不用安裝 Firebase CLI,直接從控制台匯出 Firestore 規則和索引。

加到 Chrome — 免費

2. 用 Firebase CLI 下載

Firebase CLI 在資料夾中設定 Firestore 時會寫出這兩個檔案:firebase init firestore 會下載已部署到專案的規則和索引。如果只要索引,firebase firestore:indexes 會輸出 firestore.indexes.json 的內容。兩者都免費,且需要 Node.js。

npm install -g firebase-tools
firebase login

# Rules and indexes, into firestore.rules and firestore.indexes.json
firebase init firestore

# Or only the indexes
firebase firestore:indexes --project your-project-id > firestore.indexes.json
  • init 會詢問專案和檔案名稱,並寫出一個指向這些檔案的 firebase.json。它下載的是最新發布的規則,而不是舊版本或尚未發布的草稿。
  • 對於 (default) 以外的資料庫,請把 --database <id> 加進 firestore:indexes 指令。init 會詢問要設定哪個資料庫,但查詢規則時不會帶上資料庫名稱,所以請確認 firestore.rules 來自你要的那個資料庫。

3. 從控制台複製規則

如果只是要一次取得目前的規則,只用控制台就夠了。開啟 Firestore Database > 規則(Rules),在編輯器中按一下,用 Ctrl+A(Mac 上為 ⌘A)全選,複製後貼到名為 firestore.rules 的檔案中。要複製舊版本,請先在左側選擇它。

索引沒有這樣的捷徑。索引(Indexes)分頁是表格,不是文字,所以要做成檔案,就得把每個索引手動寫進 firestore.indexes.json。

把檔案部署回去

兩個檔案要放在列出它們名稱的 firebase.json 旁邊,也就是 firebase init firestore 寫出的那個檔案:

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  }
}

然後執行 firebase deploy --only firestore;只要部署其中一個時,改用 firestore:rules 或 firestore:indexes。

  • 如果專案中有檔案沒有列出的索引,CLI 會顯示它們,並在刪除前先詢問。--force 會不經詢問直接刪除。檔案中沒有的 TTL 政策不會被刪除。
  • 加上 --project,即可把相同的規則和索引部署到另一個專案,例如從正式環境部署到測試環境。
  • 部署的規則會立即對所有用戶端生效,所以請先在 Firestore 模擬器中測試變更。

常見問題

Firebase 控制台能下載 Firestore 安全性規則嗎?

沒有按鈕可以下載。規則(Rules)分頁會在編輯器中顯示規則,你可以從中複製;firebase init firestore 會把它們下載到 firestore.rules;Firexport 這類瀏覽器擴充功能則會加入「匯出」按鈕,把它們存成 firestore.rules。

如何把 Firestore 索引匯出成 firestore.indexes.json?

用 Firebase CLI 執行 firebase firestore:indexes > firestore.indexes.json,或用 Firexport Advanced 從索引(Indexes)分頁匯出這個檔案。兩者都會以 firebase deploy 讀取的格式寫出複合式索引和欄位覆寫。

如何把 Firestore 索引複製到另一個專案?

從第一個專案匯出 firestore.indexes.json,然後執行 firebase deploy --only firestore:indexes --project 並指定另一個專案的 ID。新索引會在背景中建立,需要該索引的查詢在它顯示為已啟用(Enabled)之前都會失敗。

可以取得舊版本的 Firestore 規則嗎?

可以,從控制台取得。規則(Rules)分頁的左側列出過去的版本;選擇其中一個即可查看,然後複製它,或用 Firexport 匯出。firebase init firestore 只會下載最新發布的規則。

匯出規則或索引會消耗 Firestore 讀取次數嗎?

不會。規則和索引定義不是文件,所以無論是從控制台、CLI 還是 Firexport 儲存,都不會從你的資料庫讀取任何內容。