รายการ ส่วนขยาย คือรายการอินสแตนซ์ส่วนขยายและการกำหนดค่า ด้วยรายการ คุณสามารถ:
- แบ่งปันการกำหนดค่าส่วนขยายของคุณกับผู้อื่น
- คัดลอกการกำหนดค่าส่วนขยายระหว่างโปรเจ็กต์ต่างๆ (เช่น จากโปรเจ็กต์ชั่วคราวไปยังโปรเจ็กต์ที่ใช้งานจริง)
- ปรับใช้ส่วนขยายทั้งหมดของคุณในครั้งเดียว
- ทดสอบว่าส่วนขยายของคุณทำงานร่วมกับแอปของคุณอย่างไรโดยใช้ 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
เวอร์ชันล่าสุด และบันทึกการกำหนดค่าลงในไฟล์ 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
ส่งออกการกำหนดค่าส่วนขยายของโครงการ
หากต้องการบันทึกการกำหนดค่าส่วนขยายปัจจุบันของโปรเจ็กต์ลงในรายการ ให้ทำดังต่อไปนี้:
- หากคุณยังไม่ได้ดำเนินการ ให้ตั้งค่า 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 เพื่อทดสอบการผสานรวมกับแอปของคุณ
ปรับใช้การกำหนดค่าส่วนขยายกับโปรเจ็กต์
เมื่อคุณเพิ่มอินสแตนซ์ส่วนขยายบางส่วนลงในรายการส่วนขยายของคุณแล้ว คุณสามารถปรับใช้อินสแตนซ์ดังกล่าวกับโปรเจ็กต์โดยใช้ Firebase CLI เมื่อคุณปรับใช้กับไฟล์ 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 ทดสอบแทนคีย์ที่ใช้งานจริง ใส่พารามิเตอร์เหล่านี้ในไฟล์ .local
:
- ใส่พารามิเตอร์ที่ไม่เป็นความลับที่คุณต้องการใช้ระหว่างการจำลองใน
extensions/ EXTENSION_INSTANCE_ID .env.local
- ใส่ค่าพารามิเตอร์ลับใน
extensions/ EXTENSION_INSTANCE_ID .secret.local