รายการ ส่วนขยาย คือรายการของอินสแตนซ์ส่วนขยายและการกำหนดค่า ด้วยรายการ คุณสามารถ:
- แบ่งปันการกำหนดค่าส่วนขยายของคุณกับผู้อื่น
- คัดลอกการกำหนดค่าส่วนขยายระหว่างโปรเจ็กต์ต่างๆ (เช่น จากโปรเจ็กต์การจัดเตรียมไปยังโปรเจ็กต์ที่ใช้งานจริง)
- ปรับใช้ส่วนขยายทั้งหมดของคุณพร้อมกัน
- ทดสอบว่าส่วนขยายทำงานร่วมกับแอปของคุณอย่างไรโดยใช้ Firebase Local Emulator Suite
- ยืนยันการกำหนดค่าส่วนขยายของคุณกับการควบคุมแหล่งที่มา
- รวมส่วนขยายในไปป์ไลน์ CI/CD ของคุณ
รายการส่วนขยายมีสองส่วน:
ส่วนส่วน
extensions
ของfirebase.json
ซึ่งเป็นแผนที่ ID อินสแตนซ์กับการอ้างอิงเวอร์ชันส่วนขยาย ตัวอย่างเช่น:{ "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}.appspot.com IMG_SIZES=100x100 DELETE_ORIGINAL_FILE=false
สร้างรายการส่วนขยาย
มีสามวิธีในการสร้างรายการส่วนขยาย:
- จัดการรายการส่วนขยายของคุณด้วย Firebase CLI
- ส่งออกการกำหนดค่าส่วนขยายของโครงการ
- แก้ไขไฟล์รายการด้วยตนเอง
อธิบายสองวิธีแรกด้านล่าง
จัดการรายการส่วนขยายของคุณด้วย Firebase CLI
คุณสามารถเรียกใช้คำสั่ง ext:
ของ Firebase CLI ส่วนใหญ่ด้วยตัวเลือก --local
เพื่ออัปเดตรายการส่วนขยายโดยไม่ต้องเปลี่ยนการกำหนดค่าปัจจุบันของโครงการ
ตัวอย่างเช่น:
firebase ext:install --local firebase/firestore-bigquery-export
การเรียกใช้คำสั่งด้านบนจะแจ้งให้คุณกำหนดค่าส่วนขยาย firebase/firestore-bigquery-export
เวอร์ชันล่าสุด และบันทึกการกำหนดค่าลงในรายการ แต่จะไม่ปรับใช้การกำหนดค่ากับโครงการของคุณ
ต่อไปนี้คือตัวอย่างเพิ่มเติมของคำสั่งที่ปรับเปลี่ยนรายการส่วนขยาย:
# 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
ส่งออกการกำหนดค่าส่วนขยายของโครงการ
หากต้องการบันทึกการกำหนดค่าส่วนขยายปัจจุบันของโครงการลงในรายการ ให้ทำดังต่อไปนี้:
- หากคุณยังไม่ได้ดำเนินการ ให้ตั้งค่า Firebase CLI
- จากพรอมต์ของเชลล์ ให้เปลี่ยนเป็นไดเร็กทอรีโปรเจ็กต์ (ไดเรกทอรีโครงการของคุณมีไฟล์
firebase.json
) - เรียกใช้คำสั่ง
ext:export
:firebase ext:export
คำสั่ง ext:export
จะเพิ่มส่วนส่วน extensions
ให้กับไฟล์ firebase.json
นอกจากนี้ คำสั่ง ext:export
จะสร้างไดเร็กทอรี extensions
ที่มีไฟล์ .env
สำหรับแต่ละอินสแตนซ์ส่วนขยายที่คุณติดตั้ง ไฟล์เหล่านี้มีพารามิเตอร์การกำหนดค่าสำหรับแต่ละอินสแตนซ์
ทดสอบการกำหนดค่าส่วนขยายด้วย Firebase Local Emulator Suite
เมื่อคุณเพิ่มอินสแตนซ์ส่วนขยายบางรายการลงในรายการส่วนขยายของคุณแล้ว คุณสามารถทดสอบได้โดยใช้ Local Emulator Suite
- หากต้องการเรียกใช้ Emulator Suite แบบโต้ตอบ ให้เรียกใช้:
firebase emulators:start
- หากต้องการรัน Emulator Suite และรันสคริปต์ทดสอบ ให้รัน:
firebase emulators:exec my-test.sh
- หากต้องการเรียกใช้ Emulator Suite แบบโต้ตอบ ให้เรียกใช้:
ตอนนี้ หากคุณมีอินสแตนซ์ส่วนขยายอยู่ในรายการของคุณ Local Emulator Suite จะดาวน์โหลดซอร์สโค้ดของส่วนขยายเหล่านั้นไปที่ ~/.cache/firebase/extensions
เมื่อดาวน์โหลดแล้ว Local Emulator Suite จะเริ่มทำงานและคุณจะสามารถเรียกใช้ฟังก์ชันที่เรียกใช้งานพื้นหลังของส่วนขยายใดๆ และเชื่อมต่อแอปของคุณกับชุด Emulator เพื่อทดสอบการรวมเข้ากับแอปของคุณ
ปรับใช้การกำหนดค่าส่วนขยายกับโครงการ
เมื่อคุณเพิ่มอินสแตนซ์ส่วนขยายบางส่วนลงในไฟล์ Manifest ของส่วนขยายแล้ว คุณจะปรับใช้กับโปรเจ็กต์ได้โดยใช้ Firebase CLI เมื่อคุณปรับใช้กับรายการส่วนขยาย คุณจะติดตั้ง อัปเดต และกำหนดค่าอินสแตนซ์ส่วนขยายทั้งหมดในรายการเป็นโครงการพร้อมกัน
ในการปรับใช้รายการส่วนขยาย:
- จากพรอมต์ของเชลล์ ให้เปลี่ยนเป็นไดเร็กทอรีที่มีการกำหนดค่าส่วนขยายที่บันทึกไว้ (นี่คือไดเร็กทอรีที่มี
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 ทดสอบแทนคีย์ที่ใช้งานจริง ใส่พารามิเตอร์เหล่านี้ในไฟล์ .local
:
- ใส่พารามิเตอร์ที่ไม่เป็นความลับที่คุณต้องการใช้ระหว่างการจำลองใน
extensions/ EXTENSION_INSTANCE_ID .env.local
- ใส่ค่าพารามิเตอร์ลับใน
extensions/ EXTENSION_INSTANCE_ID .secret.local