จัดการการกำหนดค่าโครงการด้วยรายการส่วนขยาย

รายการ ส่วนขยาย คือรายการอินสแตนซ์ส่วนขยายและการกำหนดค่า ด้วยรายการ คุณสามารถ:

  • แบ่งปันการกำหนดค่าส่วนขยายของคุณกับผู้อื่น
  • คัดลอกการกำหนดค่าส่วนขยายระหว่างโปรเจ็กต์ต่างๆ (เช่น จากโปรเจ็กต์ชั่วคราวไปยังโปรเจ็กต์ที่ใช้งานจริง)
  • ปรับใช้ส่วนขยายทั้งหมดของคุณในครั้งเดียว
  • ทดสอบว่าส่วนขยายของคุณทำงานร่วมกับแอปของคุณอย่างไรโดยใช้ 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

ส่งออกการกำหนดค่าส่วนขยายของโครงการ

หากต้องการบันทึกการกำหนดค่าส่วนขยายปัจจุบันของโปรเจ็กต์ลงในรายการ ให้ทำดังต่อไปนี้:

  1. หากคุณยังไม่ได้ดำเนินการ ให้ตั้งค่า Firebase CLI
  2. จากพรอมต์เชลล์ ให้เปลี่ยนเป็นไดเร็กทอรีโปรเจ็กต์ (ไดเรกทอรีโครงการของคุณมีไฟล์ firebase.json )
  3. เรียกใช้คำสั่ง ext:export :
    firebase ext:export

คำสั่ง ext:export จะเพิ่มส่วนส่วน extensions ให้กับไฟล์ firebase.json นอกจากนี้ คำสั่ง ext:export จะสร้างไดเร็กทอรี extensions ที่มีไฟล์ .env สำหรับแต่ละอินสแตนซ์ส่วนขยายที่คุณได้ติดตั้ง ไฟล์เหล่านี้มีพารามิเตอร์การกำหนดค่าสำหรับแต่ละอินสแตนซ์

ทดสอบการกำหนดค่าส่วนขยายด้วย Firebase Local Emulator Suite

เมื่อคุณเพิ่มอินสแตนซ์ส่วนขยายบางส่วนลงในรายการส่วนขยายของคุณแล้ว คุณสามารถทดสอบได้โดยใช้ Local Emulator Suite

  1. ติดตั้งและกำหนดค่า Local Emulator Suite

  2. เริ่ม Local Emulator Suite :

    • หากต้องการรัน Emulator Suite แบบโต้ตอบ ให้รัน: firebase emulators:start
    • หากต้องการรัน Emulator Suite และรันสคริปต์ทดสอบ ให้รัน: firebase emulators:exec my-test.sh

ตอนนี้ หากคุณมีอินสแตนซ์ส่วนขยายอยู่ในรายการของคุณ Local Emulator Suite จะดาวน์โหลดซอร์สโค้ดของส่วนขยายเหล่านั้นไปที่ ~/.cache/firebase/extensions เมื่อดาวน์โหลดแล้ว Local Emulator Suite จะเริ่มทำงาน และคุณจะสามารถทริกเกอร์ฟังก์ชันที่เรียกใช้ในพื้นหลังของส่วนขยายได้ และเชื่อมต่อแอปของคุณกับชุด Emulator เพื่อทดสอบการผสานรวมกับแอปของคุณ

ปรับใช้การกำหนดค่าส่วนขยายกับโปรเจ็กต์

เมื่อคุณเพิ่มอินสแตนซ์ส่วนขยายบางส่วนลงในรายการส่วนขยายของคุณแล้ว คุณสามารถปรับใช้อินสแตนซ์ดังกล่าวกับโปรเจ็กต์โดยใช้ Firebase CLI เมื่อคุณปรับใช้กับไฟล์ Manifest ของส่วนขยาย คุณจะติดตั้ง อัปเดต และกำหนดค่าอินสแตนซ์ของส่วนขยายทั้งหมดในไฟล์ Manifest ลงในโปรเจ็กต์พร้อมกัน

หากต้องการปรับใช้รายการส่วนขยาย:

  1. จากพรอมต์เชลล์ ให้เปลี่ยนเป็นไดเร็กทอรีที่มีการกำหนดค่าส่วนขยายที่บันทึกไว้ (นี่คือไดเร็กทอรีที่มี firebase.json หากคุณเพิ่งรัน ext:export แสดงว่าคุณอยู่ในไดเร็กทอรีที่ถูกต้องแล้ว)
  2. รันคำสั่ง 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