จัดการการกำหนดค่าโปรเจ็กต์ด้วยไฟล์ Manifest ของส่วนขยาย

ไฟล์ 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}.appspot.com
    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 ให้ทําดังนี้

  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

เมื่อเพิ่มอินสแตนซ์ส่วนขยายบางส่วนลงในไฟล์ Manifest ของส่วนขยายแล้ว คุณจะทดสอบอินสแตนซ์เหล่านั้นได้โดยใช้ Local Emulator Suite

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

  2. เริ่มLocal Emulator Suite

    • หากต้องการเรียกใช้ชุดโปรแกรมจำลองแบบอินเทอร์แอกทีฟ ให้เรียกใช้คำสั่งต่อไปนี้ firebase emulators:start
    • หากต้องการเรียกใช้ชุดโปรแกรมจำลองและเรียกใช้สคริปต์ทดสอบ ให้เรียกใช้คำสั่งต่อไปนี้ firebase emulators:exec my-test.sh

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

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

เมื่อเพิ่มอินสแตนซ์ของส่วนขยายลงในไฟล์ Manifest ของส่วนขยายแล้ว คุณจะติดตั้งใช้งานลงในโปรเจ็กต์ได้โดยใช้ Firebase CLI เมื่อทําให้การเผยแพร่ใช้งานได้ด้วยไฟล์ Manifest ของส่วนขยาย คุณจะติดตั้ง อัปเดต และกำหนดค่าอินสแตนซ์ส่วนขยายทั้งหมดในไฟล์ 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 ทดสอบแทนคีย์ API เวอร์ชันที่ใช้งานจริง ใส่พารามิเตอร์เหล่านี้ในไฟล์ .local

  • ใส่พารามิเตอร์ที่ไม่ใช่ข้อมูลลับที่ต้องการใช้ระหว่างการจําลองใน extensions/EXTENSION_INSTANCE_ID.env.local
  • ใส่ค่าพารามิเตอร์ลับใน extensions/EXTENSION_INSTANCE_ID.secret.local