ไฟล์ Manifest ของส่วนขยายคือรายการอินสแตนซ์ของส่วนขยายและการกำหนดค่าของอินสแตนซ์เหล่านั้น โดยคุณสามารถทำสิ่งต่อไปนี้ได้ด้วยไฟล์ Manifest
- แชร์การกำหนดค่าส่วนขยายกับผู้อื่น
- คัดลอกการกำหนดค่าส่วนขยายระหว่างโปรเจ็กต์ต่างๆ (เช่น จากโปรเจ็กต์การจัดเตรียมไปยังโปรเจ็กต์ที่ใช้งานจริง)
- ติดตั้งใช้งานส่วนขยายทั้งหมดพร้อมกัน
- ทดสอบการทำงานของส่วนขยายกับแอปโดยใช้ Firebase Local Emulator Suite
- คอมมิตการกำหนดค่าส่วนขยายไปยังระบบควบคุมเวอร์ชัน
- รวมส่วนขยายไว้ในไปป์ไลน์ CI/CD
ไฟล์ Manifest ของส่วนขยายมี 2 ส่วนดังนี้
ส่วน
extensionsของfirebase.jsonซึ่งเป็นแผนผังของรหัสอินสแตนซ์ไปยังข้อมูลอ้างอิงเวอร์ชันส่วนขยาย ตัวอย่างเช่น{ "extensions": { "my-bigquery-extension": "firebase/firestore-bigquery-export@^0.1.18", "my-image-resizer": "firebase/storage-resize-images@^0.1.22", } }ไฟล์
.envที่มีการกำหนดค่าสำหรับอินสแตนซ์ของส่วนขยายแต่ละรายการในไดเรกทอรีย่อยextensions/ของไดเรกทอรีโปรเจ็กต์ Firebase ตัวอย่างเช่น อินสแตนซ์ของstorage-resize-imagesอาจมีไฟล์.envดังนี้IMAGE_TYPE=jpeg LOCATION=us-central1 IMG_BUCKET=${param:PROJECT_ID}.firebasestorage.app IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
สร้างไฟล์ Manifest ของส่วนขยาย
คุณสร้างไฟล์ Manifest ของส่วนขยายได้ 3 วิธีดังนี้
- จัดการไฟล์ Manifest ของส่วนขยายด้วย Firebase CLI
- ส่งออกการกำหนดค่าส่วนขยายของโปรเจ็กต์
- แก้ไขไฟล์ Manifest ด้วยตนเอง
เราจะอธิบาย 2 วิธีแรกด้านล่าง
จัดการไฟล์ Manifest ของส่วนขยายด้วย Firebase CLI
คุณสามารถเรียกใช้คำสั่ง ext: ส่วนใหญ่ของ Firebase CLI ด้วยตัวเลือก --local เพื่ออัปเดตไฟล์ Manifest ของส่วนขยายโดยไม่ต้องเปลี่ยนการกำหนดค่าปัจจุบันของโปรเจ็กต์
ตัวอย่างเช่น
firebase ext:install --local firebase/firestore-bigquery-export
การเรียกใช้คำสั่งข้างต้นจะแจ้งให้คุณกำหนดค่าส่วนขยาย firebase/firestore-bigquery-export เวอร์ชันล่าสุดและบันทึกการกำหนดค่าลงในไฟล์ Manifest แต่จะไม่ติดตั้งใช้งานการกำหนดค่าในโปรเจ็กต์
ต่อไปนี้เป็นตัวอย่างเพิ่มเติมของคำสั่งที่แก้ไขไฟล์ Manifest ของส่วนขยาย
# ext:configure changes the params for an extension instance in your extensions manifest
$ firebase ext:configure my-bigquery-extension --local
# ext:update --local updates an instance in your extensions manifest
# to the latest version of that extension
$ firebase ext:update my-bigquery-extension --local
# You can also specify a version if you don't want to update to the latest version
$ firebase ext:update my-bigquery-extension firebase/firestore-bigquery-export@0.1.10 --local
# ext:uninstall --local removes an instance from your extensions manifest
$ firebase ext:uninstall my-bigquery-extension --local
ส่งออกการกำหนดค่าส่วนขยายของโปรเจ็กต์
หากต้องการบันทึกการกำหนดค่าส่วนขยายปัจจุบันของโปรเจ็กต์ลงในไฟล์ Manifest ให้ทำดังนี้
- ตั้งค่า Firebase CLI หากยังไม่ได้ดำเนินการ
- เปลี่ยนเป็นไดเรกทอรีโปรเจ็กต์จากพรอมต์เชลล์ (ไดเรกทอรีโปรเจ็กต์มีไฟล์
firebase.json) - เรียกใช้คำสั่ง
ext:exportfirebase ext:export
คำสั่ง ext:export จะเพิ่มส่วน extensions ลงในไฟล์ firebase.json นอกจากนี้ คำสั่ง ext:export ยังสร้างไดเรกทอรี extensions ที่มีไฟล์ .env สำหรับอินสแตนซ์ของส่วนขยายแต่ละรายการที่คุณติดตั้ง ไฟล์เหล่านี้มีพารามิเตอร์การกำหนดค่าสำหรับแต่ละอินสแตนซ์
ทดสอบการกำหนดค่าส่วนขยายด้วย Firebase Local Emulator Suite
เมื่อเพิ่มอินสแตนซ์ของส่วนขยายลงในไฟล์ Manifest ของส่วนขยายแล้ว คุณสามารถ ทดสอบอินสแตนซ์เหล่านั้นได้โดยใช้ Local Emulator Suite
เริ่ม Local Emulator Suite โดยทำดังนี้
- หากต้องการเรียกใช้ชุดโปรแกรมจำลองแบบโต้ตอบ ให้เรียกใช้
firebase emulators:start - หากต้องการเรียกใช้ ชุดโปรแกรมจำลอง และเรียกใช้ สคริปต์การทดสอบ ให้เรียกใช้
firebase emulators:exec my-test.sh
- หากต้องการเรียกใช้ชุดโปรแกรมจำลองแบบโต้ตอบ ให้เรียกใช้
ตอนนี้หากคุณมีอินสแตนซ์ของส่วนขยายที่แสดงอยู่ในไฟล์ Manifest
Local Emulator Suite จะดาวน์โหลดซอร์สโค้ดของส่วนขยายเหล่านั้นลงใน
~/.cache/firebase/extensions เมื่อดาวน์โหลดแล้ว
Local Emulator Suite จะเริ่มทำงาน และคุณจะสามารถทริกเกอร์ฟังก์ชันที่ทริกเกอร์เบื้องหลังของส่วนขยายใดก็ได้ รวมถึงเชื่อมต่อแอปกับ Emulator
suite เพื่อทดสอบการผสานรวมกับแอป
ติดตั้งใช้งานการกำหนดค่าส่วนขยายในโปรเจ็กต์
เมื่อเพิ่มอินสแตนซ์ของส่วนขยายลงในไฟล์ Manifest ของส่วนขยายแล้ว คุณสามารถติดตั้งใช้งานอินสแตนซ์เหล่านั้นในโปรเจ็กต์ได้โดยใช้ Firebase CLI เมื่อติดตั้งใช้งานด้วยไฟล์ Manifest ของส่วนขยาย คุณจะติดตั้ง อัปเดต และกำหนดค่าอินสแตนซ์ของส่วนขยายทั้งหมดในไฟล์ Manifest ลงในโปรเจ็กต์พร้อมกัน
วิธีติดตั้งใช้งานไฟล์ Manifest ของส่วนขยาย
- เปลี่ยนเป็นไดเรกทอรีที่มีการกำหนดค่าส่วนขยายที่บันทึกไว้จากพรอมต์เชลล์ (ซึ่งเป็นไดเรกทอรีที่มี
firebase.jsonหากเพิ่งเรียกใช้ext:exportคุณจะอยู่ในไดเรกทอรีที่ถูกต้องแล้ว) - เรียกใช้คำสั่ง
deployหากต้องการติดตั้งใช้งานส่วนขยายในโปรเจ็กต์อื่นที่ไม่ใช่โปรเจ็กต์ปัจจุบัน ให้ระบุ--project=ด้วยfirebase deploy --only extensions –-project=YOUR_PROJECT_ID
คำสั่ง deploy จะตรวจสอบการกำหนดค่าของแต่ละอินสแตนซ์ ถามว่าคุณต้องการลบอินสแตนซ์ของส่วนขยายออกจากโปรเจ็กต์ปลายทางที่ไม่ได้แสดงอยู่ใน firebase.json หรือไม่ จากนั้นจึงติดตั้งใช้งานอินสแตนซ์ของส่วนขยายทั้งหมด
การกำหนดค่าส่วนขยายเฉพาะโปรเจ็กต์
คุณสามารถใช้การกำหนดค่าส่วนขยายที่บันทึกไว้เพื่อติดตั้งใช้งานในโปรเจ็กต์ต่างๆ ได้ เช่น โปรเจ็กต์การจัดเตรียมและโปรเจ็กต์ที่ใช้งานจริง เมื่อดำเนินการเช่นนี้ คุณอาจต้องกำหนดค่าพารามิเตอร์บางอย่างให้แตกต่างกันสำหรับแต่ละโปรเจ็กต์
ไฟล์ .env เฉพาะโปรเจ็กต์ช่วยให้คุณทำเช่นนี้ได้
- ใส่ค่าพารามิเตอร์ที่แตกต่างกันระหว่างโปรเจ็กต์ใน
extensions/EXTENSION_INSTANCE_ID.env.YOUR_PROJECT_ID - ใส่ค่าพารามิเตอร์ที่ใช้ร่วมกันใน
extensions/EXTENSION_INSTANCE_ID.env
บางครั้งคุณอาจต้องการใช้ค่าพารามิเตอร์อื่นเมื่อจำลองส่วนขยาย เช่น คุณอาจต้องการระบุคีย์ API สำหรับทดสอบแทนคีย์ API ที่ใช้งานจริง ให้ใส่พารามิเตอร์เหล่านี้ในไฟล์ .local
- ใส่พารามิเตอร์ที่ไม่เป็นความลับซึ่งคุณต้องการใช้ระหว่างการจำลองใน
extensions/EXTENSION_INSTANCE_ID.env.local - ใส่ค่าพารามิเตอร์ที่เป็นความลับใน
extensions/EXTENSION_INSTANCE_ID.secret.local