Sebelum menggunakan emulator Extensions dengan aplikasi, pastikan Anda memahami keseluruhan alur kerja Firebase Local Emulator Suite, dan sudah menginstal serta mengonfigurasi Local Emulator Suite dan meninjau perintah CLI-nya.
Panduan ini juga mengasumsikan bahwa Anda telah memahami Firebase Extensions dan cara menggunakannya di aplikasi Firebase.
Apa yang dapat saya lakukan dengan emulator Extensions?
Dengan emulator Extensions, Anda dapat menginstal dan mengelola ekstensi di lingkungan lokal yang aman dan lebih memahami kemampuannya sekaligus meminimalkan biaya tagihan. Emulator menjalankan fungsi ekstensi Anda secara lokal, termasuk fungsi yang dipicu peristiwa latar belakang menggunakan emulator untuk Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication, dan Pub/Sub, serta fungsi yang dipicu Eventarc yang diimplementasikan dalam Cloud Functions v2.
Memilih project Firebase
Firebase Local Emulator Suite mengemulasi produk untuk satu project Firebase.
Untuk memilih project yang akan digunakan, sebelum memulai emulator, jalankan
firebase use
di CLI di direktori kerja Anda. Atau, Anda dapat meneruskan
flag --project
ke setiap perintah
emulator.
Local Emulator Suite mendukung emulasi project Firebase sungguhan dan project demo.
Jenis project | Fitur | Penggunaan dengan emulator |
---|---|---|
Sungguhan |
Project Firebase sungguhan adalah project yang Anda buat dan konfigurasikan (kemungkinan besar melalui Firebase console). Project sungguhan memiliki resource live, seperti instance database, bucket penyimpanan, fungsi, atau resource lain yang Anda siapkan untuk project Firebase tersebut. |
Jika mengerjakan project Firebase sungguhan, Anda dapat menjalankan emulator untuk salah satu atau semua produk yang didukung. Untuk produk yang tidak diemulasi, aplikasi dan kode Anda akan berinteraksi dengan resource live (instance database, bucket penyimpanan, fungsi, dsb.). |
Demo |
Project Firebase demo tidak memiliki konfigurasi Firebase sungguhan dan tidak memiliki resource live. Project ini biasanya diakses melalui codelab atau tutorial lainnya. Project ID untuk project demo memiliki awalan |
Jika menggunakan project Firebase demo, aplikasi dan kode Anda hanya berinteraksi dengan emulator. Jika aplikasi Anda mencoba berinteraksi dengan resource yang tidak dijalankan dengan emulator, kode tersebut akan gagal. |
Jika memungkinkan, sebaiknya gunakan project demo. Manfaatnya meliputi:
- Penyiapan yang lebih mudah karena Anda dapat menjalankan emulator tanpa perlu membuat project Firebase
- Keamanan yang lebih tangguh karena jika kode Anda tidak sengaja memanggil resource yang tidak diemulasi (production), tidak akan terjadi perubahan data, penggunaan, dan penagihan
- Dukungan offline yang lebih baik karena Anda tidak perlu mengakses internet untuk mendownload konfigurasi SDK.
Menginstal dan mengevaluasi ekstensi
Menggunakan emulator Extensions untuk mengevaluasi apakah ekstensi memenuhi kebutuhan Anda tidaklah sulit.
Mari asumsikan Anda tertarik dengan
ekstensiMemicu Email (firestore-send-email
),
meskipun alur kerja berikut mencakup ekstensi apa pun. Jika dijalankan dengan emulator lokal,
ekstensi Memicu Email akan otomatis menggunakan emulator Cloud Firestore
dan Cloud Functions.
Untuk mengevaluasi ekstensi secara lokal:
Tambahkan ekstensi ke manifes ekstensi lokal. Manifes ekstensi adalah daftar instance ekstensi dan konfigurasinya.
firebase ext:install --local firebase/firestore-send-email
Jika menjalankan perintah di atas, Anda akan diminta untuk mengonfigurasi versi terbaru dari ekstensi
firebase/firestore-send-email
dan menyimpan konfigurasi tersebut ke manifes, tetapi konfigurasi tersebut tidak akan di-deploy ke project Anda. Untuk mengetahui informasi selengkapnya, lihat Mengelola konfigurasi ekstensi dengan manifesMulai Local Emulator Suite seperti biasa.
firebase emulators:start
Sekarang, dengan menggunakan instance ekstensi firestore-send-email
yang tercantum dalam
manifes, Local Emulator Suite akan mendownload kode sumber
ekstensi tersebut ke ~/.cache/firebase/extensions
. Setelah sumber didownload,
Local Emulator Suite akan dimulai dan Anda dapat memicu
fungsi ekstensi yang dipicu latar belakang ekstensi dan menghubungkan
aplikasi ke Local Emulator Suite untuk menguji integrasinya dengan aplikasi Anda.
Anda dapat menggunakan Emulator Suite UI untuk menambahkan data ke koleksi dokumen email dan menyiapkan resource backend lainnya, seperti yang diperlukan oleh ekstensi Memicu Email.
Atau, untuk lingkungan pengujian noninteraktif seperti alur kerja continuous integration, Anda dapat menulis skrip pengujian untuk mengevaluasi ekstensi yang salah satu langkahnya adalah mengisi data Cloud Firestore yang diperlukan dan memicu fungsi. Anda kemudian akan memanggil Local Emulator Suite untuk menjalankan skrip pengujian:
firebase emulators:exec my-test.sh
Perbedaan antara pengujian dengan emulator Extensions dan produksi
Emulator Extensions memungkinkan Anda menguji ekstensi dengan cara yang mirip dengan produksi. Namun, ada beberapa perbedaan dari perilaku produksi.
Cloud IAM
Firebase Emulator Suite tidak berupaya mereplikasi atau mematuhi perilaku terkait IAM dalam beroperasi. Emulator mematuhi Aturan Keamanan Firebase yang diberikan. Namun, dalam situasi saat IAM biasanya digunakan, misalnya untuk menetapkan akun layanan yang memanggil Cloud Functions serta izinnya, emulator tidak dapat dikonfigurasi dan akan menggunakan akun yang tersedia secara global di mesin developer Anda, sama seperti menjalankan skrip lokal secara langsung.
Batasan jenis pemicu
Saat ini, Firebase Local Emulator Suite hanya mendukung fungsi yang dipicu permintaan HTTP, pemicu peristiwa kustom Eventarc untuk ekstensi, dan fungsi yang dipicu peristiwa latar belakang untuk Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication, dan Pub/Sub. Untuk mengevaluasi ekstensi yang menggunakan fungsi dengan pemicu jenis lainnya, Anda harus menginstal ekstensi dalam project Firebase pengujian.
Apa selanjutnya?
- Untuk melihat kumpulan video pilihan dan contoh petunjuk terperinci, ikuti Playlist Pelatihan Emulator Firebase.