Jak mogę przełączyć aplikacje z CLI Firebase?

101

Wydaje się, że powinno to być całkiem łatwe, ale z jakiegoś powodu jestem pokonany.

Próbuję użyć interfejsu wiersza polecenia Firebase-tools do interakcji z moją bazą danych. Mogę się bez problemu zalogować, a kiedy piszę firebase list, otrzymuję listę wszystkich moich obecnych aplikacji. Informuje również, z którą aplikacją jestem obecnie połączony.

Mój problem polega na tym, że chcę połączyć się z jedną z innych aplikacji. Uruchamiam zapytania w mojej aplikacji przejściowej i muszę je uruchamiać w mojej aplikacji produkcyjnej. Widzę aplikację produkcyjną na liście, ale nie znajduję sposobu, aby przełączyć się na tę aplikację.

Myśli?

wvm2008
źródło

Odpowiedzi:

27

Wolę używać skryptów. Rozważ taką strukturę projektu:

your-project
├── .firebaserc
└── functions
   ├── package.json
   └── index.js

Przejdź do .firebasercnastępnego przykładu i postępuj zgodnie z nim

{
  "projects": {
    "default": "project-name",
    "prod": "other-name"
  }
}

Następnie przejdź do package.jsoni dodaj następujące skrypty ( changeToProdi changeToDev).

{
  ...
  "scripts": {
    ...
    "changeToProd": "firebase use prod",
    "changeToDev": "firebase use default"
  },
  "dependencies": {
    ...
  },
  ...
}

Jeśli twoje IDE obsługuje skrypty npm, możesz je uruchomić za pomocą interfejsu IDE, w przeciwnym razie można je uruchomić za pomocą konsoli poleceń. Upewnij się, że jesteś w functionsfolderze.

npm run-script changeToProd

Możesz zweryfikować swój bieżący projekt, uruchamiając następujące polecenie z terminala lub dodając do skryptów, tak jak właśnie to zrobiliśmy

firebase use
cutiko
źródło
Witam, moje podejście ma być wspólne z resztą zespołu :)
cutiko
17

W katalogu, w którym uruchamiasz firebase list, będzie plik o nazwie firebase.json. Jeśli otworzysz to w edytorze tekstu, zobaczysz tam nazwę aplikacji. Możesz go tam zmienić lub usunąć, firebase.jsonaby zmienić aplikację.

Możesz też zaoszczędzić sobie kłopotów z edytowaniem pliku tekstowego i zrób tak, jak mówi Jason: użyj firebase init.

Frank van Puffelen
źródło
1
Czy teraz jest zmiana? Ponieważ nie mogę znaleźć nazwy aplikacji w firebase.json, ale mogę ją znaleźć w .firebaserc ... Doceniam wyjaśnienie ...
Abhishek
1
Nazwa projektu rzeczywiście jest .firebasercteraz.
Frank van Puffelen
2
Może być źle, ale nie wydaje się, aby zmieniało to bazę danych. Wdrażanie zostanie wdrożone w „bieżącym” projekcie, ale wydaje się, że nadal pobiera dane z oryginalnej bazy danych. Dość cholernie niebezpieczne, jeśli zamierzasz użyć tego do oddzielenia produkcji od środowisk przejściowych. Mam nadzieję, że nikt nie straci danych z prod. :(
Enric Ribas
1
Mam ten sam problem, który @Enric opisał na temat uzyskiwania dostępu do domyślnej bazy danych podczas pracy w innym projekcie. Czy istnieje sposób na wykrycie, który projekt jest używany po stronie klienta, aby można było zmienić konfigurację, aby odpowiednio zainicjować aplikację?
Zectbumo
upewnij się, że zmieniłeś firebaseConfig `// Konfiguracja Firebase Twojej aplikacji internetowej var firebaseConfig = {apiKey:" api-key ", authDomain:" new-project.firebaseapp.com ", databaseURL:" https: /new-project.firebaseio.com ", projectId:" new-project-id ", storageBucket:" xxxxxxxxxxx.appspot.com ", messagingSenderId:" xxxxxx ", appId:" xxxxxxxxxx ", measurementId:" xxxxxxxx "}; // Zainicjuj
Firebase`
11

Jeśli używasz Node.js w systemie Windows, twoja odpowiedź powinna brzmieć

firebase use <project_id>

ale na przykład bez <>

firebase use chat-app-2a150

Możesz użyć następującego kodu, aby wyświetlić wszystkie swoje projekty, aby wybrać poprawny identyfikator projektu do użycia

firebase projects:list
Meshach Koech
źródło
6

Odpowiedź w 2020 roku:

Oficjalnie zalecanym sposobem jest użycie „aliasu”:

W swoim .firebasercustaw różne identyfikatory projektów:

{
  "projects": {
    "production": "my-project-id",
    "testing": "my-project-id--testing"
  }
}
// you can also interactively add them with `firebase use --add`

Następnie możesz zrobić firebase use testinglub firebase use productionprzełączać się między projektami.

Zwróć uwagę, że przełączanie projektów nie spowoduje powstania żadnych różnic git, jest to po prostu zapamiętywane na komputerze lokalnym. Aby zobaczyć, który projekt jest aktualnie używany, uruchom firebase use.

Jeśli chcesz zmienić identyfikator projektu bez wprowadzania zmian do właściciela projektu .firebaserc, zrób to firebase use my-project-idlokalnie, jak wspomniano w zaakceptowanej odpowiedzi. Z drugiej strony, jeśli jesteś właścicielem projektu i chcesz, aby inni używali własnych identyfikatorów projektów, dodaj .firebasercdo .gitignore.

ZYinMD
źródło
3

możesz po prostu użyć przełącznika wiersza poleceń

--project=my-firebase-project
Ron Chan
źródło
1

Dodatek @ cutiko's odpowiedź

W package.json

"scripts": {
...
"prod": "echo \"Switch to Production environment\" && firebase use prod && npm run runtimeconfig",
"dev": "echo \"Switch to Development environment\" && firebase use default && npm run runtimeconfig"
...

npm run runtimeconfig aby uzyskać niestandardowe środowisko konfiguracyjne

W .firebaserc

{
  "projects": {
    "default":"{project-dev-id}",
    "prod": "{project-prod-id}"
  }
}
Giang
źródło
0

aby zmienić projekt docelowy aplikacji Firebase, możesz wpisać „firebase użyj myProjectName”. Użyłem również powyższej odpowiedzi „lista firebase”, aby sprawdzić, jaki projekt mam (pracuj dla mnie w Firebase CLI 7.4 z aplikacją Angular 7)

yehonatan yehezkel
źródło