Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

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

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

ส่งออกการกำหนดค่าส่วนขยายของโปรเจ็กต์

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

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

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

  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