Zum Inhalt

Firebase Config - Quick Reference

🤔 Welches Script verwenden?

┌─────────────────────────────────────────────────────────────┐
│ Was möchtest du tun?                                        │
└─────────────────────────────────────────────────────────────┘

📝 Ich habe Rules im Root bearbeitet
   → firebase deploy --only firestore:rules
   → ./firebase_config/sync_from_root.sh  (zum Backup sichern)

🆕 Ich setze ein NEUES Firebase-Projekt auf
   → ./firebase_config/setup_project.sh
   → firebase use --add
   → firebase deploy

📥 Ich habe das Repo geklont
   → Nichts! Die Dateien sind schon im Root
   → Nur: firebase use --add (um dein Projekt zu wählen)

🚀 Ich will deployen
   → ./firebase_config/deploy_rules.sh

🔄 Kollege hat Rules geändert (git pull)
   → Nichts! Root-Dateien sind aktuell durch git
   → Nur deployen wenn nötig

📂 Verzeichnisstruktur

/                              ← Root (aktive Dateien)
├── firestore.rules           ← Firebase CLI liest HIER
├── storage.rules             ← Firebase CLI liest HIER
├── firestore.indexes.json    ← Firebase CLI liest HIER
├── firebase.json             ← Firebase CLI liest HIER
├── cors.json                 ← Für gsutil cors set
└── firebase_config/          ← Backup & Templates
    ├── firestore.rules               (Backup/Template)
    ├── firestore.rules.production    (Production Version)
    ├── storage.rules                 (Backup/Template)
    ├── firestore.indexes.json        (Backup/Template)
    ├── firebase.json                 (Backup/Template)
    ├── cors.json                     (Backup/Template)
    ├── sync_from_root.sh      ← Root → firebase_config
    ├── setup_project.sh       ← firebase_config → Root
    └── deploy_rules.sh        ← Deployment

🔁 Typische Workflows

Workflow 1: Rules ändern

vim firestore.rules                    # Im Root bearbeiten
firebase deploy --only firestore:rules # Deployen
./firebase_config/sync_from_root.sh    # Backup sichern
git add . && git commit -m "..."       # Committen

Workflow 2: Production Rules aktivieren

cp firebase_config/firestore.rules.production firestore.rules
firebase deploy --only firestore:rules
./firebase_config/sync_from_root.sh

Workflow 3: Neues Projekt

git clone ...
./firebase_config/setup_project.sh
firebase login
firebase use --add
firebase deploy --only firestore:rules,storage:rules

⚠️ Wichtig zu verstehen

  1. Git tracked die Root-Dateien UND firebase_config/
  2. Beide Versionen sind im Repo

  3. Firebase CLI liest NUR die Root-Dateien

  4. firebase deploy schaut nur in /firestore.rules usw.

  5. firebase_config/ ist für Menschen

  6. Backup für neues Projekt-Setup
  7. Template für andere Entwickler
  8. Production-Varianten

  9. Nach Änderungen immer sync_from_root.sh

  10. Sonst driften Root und firebase_config/ auseinander
  11. Andere Entwickler haben veraltete Templates