ทดสอบเว็บแอปในเครื่องด้วยโปรแกรมจำลองโฮสติ้งแอป Firebase

คุณสามารถทดสอบแอปในเครื่องก่อนApp Hostingทำให้ใช้งานได้โดยใช้App Hostingโปรแกรมจำลอง ซึ่งเป็นส่วนหนึ่งของ Firebase Local Emulator Suite

ก่อนใช้โปรแกรมจำลอง App Hosting โปรดตรวจสอบว่าคุณเข้าใจเวิร์กโฟลว์โดยรวมของ Firebase Local Emulator Suite และติดตั้งและกําหนดค่า Local Emulator Suite รวมถึงอ่านคําสั่ง CLI ของ Local Emulator Suite

หัวข้อนี้ถือว่าคุณคุ้นเคยกับ App Hosting อยู่แล้ว หากจําเป็น ให้อ่านข้อมูลเบื้องต้นเกี่ยวกับ App Hosting และเอกสารอื่นๆ เพื่อช่วยให้คุณทําความเข้าใจวิธีการทํางานของ App Hosting

ฉันใช้โปรแกรมจำลอง App Hosting ทำอะไรได้บ้าง

โปรแกรมจำลอง App Hosting ช่วยให้คุณทดสอบและปรับแต่งเว็บแอปพลิเคชันได้ในเครื่อง ซึ่งจะช่วยเพิ่มประสิทธิภาพกระบวนการพัฒนาและปรับปรุงคุณภาพของเว็บแอปที่สร้างโดยใช้ Firebase และทำให้ใช้งานได้ใน App Hosting

โปรแกรมจำลอง App Hosting

  1. ช่วยให้คุณเรียกใช้เว็บแอปในเครื่องได้ โดยมีการกำหนดตัวแปรสภาพแวดล้อมไว้ในapphosting.yamlไฟล์การกําหนดค่า
  2. ส่งออกข้อมูลลับที่คุณบันทึกไว้ในApp Hostingสภาพแวดล้อมต่างๆ ได้ ซึ่งจะช่วยให้คุณจำลองแอปพลิเคชันในสภาพแวดล้อมต่างๆ ได้
  3. ใช้ร่วมกับโปรแกรมจำลอง Firebase อื่นๆ ได้ หากคุณใช้ Firestore, Auth หรือโปรแกรมจำลองอื่นๆ Local Emulator Suite จะตรวจสอบว่าโปรแกรมจำลองเหล่านี้เริ่มต้นก่อนโปรแกรมจำลอง App Hosting

กำหนดค่าโปรแกรมจำลอง

หากต้องการเริ่มต้นใช้งาน ให้ติดตั้งและเริ่มต้น Local Emulator Suite ตามที่อธิบายไว้ในการติดตั้ง การกำหนดค่า และการผสานรวมชุดโปรแกรมจำลองในเครื่อง อย่าลืมเลือก App Hosting Emulator นอกเหนือจากโปรแกรมจำลอง Firebase อื่นๆ ที่ต้องการตั้งค่า CLI จะแจ้งให้คุณป้อนค่าจำลอง App Hosting บางค่า ซึ่งรวมถึง

  • ไดเรกทอรีรูทของแอปซึ่งสัมพันธ์กับโปรเจ็กต์ ซึ่งสำคัญหากคุณใช้ monorepos กับ App Hosting
  • คุณต้องการส่งออกข้อมูลลับสําหรับสภาพแวดล้อมที่เฉพาะเจาะจงหรือไม่
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
 ◯ Firestore Emulator
 ◯ Database Emulator
 ◯ Hosting Emulator
 ◯ Pub/Sub Emulator
 ◯ Storage Emulator
 ◯ Eventarc Emulator
(Move up and down to reveal more choices)

? Specify your app's root directory relative to your project (.)

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)

i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

ระบบจะใช้ค่าที่คุณระบุในขั้นตอนการตั้งค่านี้เพื่ออัปเดตการกำหนดค่าApp Hostingโปรแกรมจำลองใน firebase.json นอกจากนี้ คุณยังกำหนดค่าโปรแกรมจำลองโฮสติ้งแอปได้โดยอัปเดต firebase.json โดยตรง รูปแบบสคีมาสำหรับโปรแกรมจำลองโฮสติ้งแอปมีดังนี้

{
  ...
  "emulators": {
    "apphosting": {
      "startCommandOverride": <command> [optional]
      "rootDirectory": <path> [optional]
      }
    }
  }
  • startCommandOverride จะสร้างขึ้นและตั้งค่าโดยอัตโนมัติเมื่อเริ่มต้นโปรแกรมจำลอง หากไม่ได้ระบุ โปรแกรมจำลองจะตรวจหาและเรียกใช้คำสั่ง dev ของเครื่องมือจัดการแพ็กเกจ
  • rootDirectory ใช้เพื่อรองรับการตั้งค่าโปรเจ็กต์ Monorepo หากเว็บแอปอยู่ในไดเรกทอรีย่อย คุณจะต้องระบุเส้นทางของไดเรกทอรีนั้นซึ่งสัมพันธ์กับรูท (ตำแหน่งของ firebase.json)

จัดการการจําลอง

การสร้างข้อมูลจำเพาะของโปรแกรมจำลองจะสร้างไฟล์ apphosting.local.yaml ในไดเรกทอรีรูทของแอป ไฟล์การกําหนดค่านี้มีสคีมาเดียวกับไฟล์ apphosting.yaml ที่ใช้กับเวอร์ชันที่ใช้งานจริง แต่มีไว้สําหรับการพัฒนาในเครื่องเท่านั้น โดยค่าเริ่มต้น เครื่องจำลองจะอ่านการกำหนดค่าจากไฟล์ apphosting.yaml แต่หากมีไฟล์ apphosting.yaml อยู่ ระบบจะจัดลำดับความสำคัญของการกำหนดค่าในไฟล์นั้นและให้ความสำคัญก่อนapphosting.local.yaml

ส่งออกข้อมูลลับเพื่อจำลองสภาพแวดล้อมต่างๆ ในเครื่อง

หากทํางานกับสภาพแวดล้อมหลายรายการและต้องการจําลองสภาพแวดล้อมแอปต่างๆ ในเครื่อง คุณอาจต้องใช้ความลับของสภาพแวดล้อมที่เกี่ยวข้อง คุณสามารถส่งออกข้อมูลลับสําหรับสภาพแวดล้อมที่เฉพาะเจาะจงได้โดยใช้คําสั่ง CLI apphosting:config:export (หรือจะนําเข้าข้อมูลลับระหว่างการเริ่มต้นใช้งานโปรแกรมจําลองก็ได้ตามที่แสดงในหัวข้อกําหนดค่าโปรแกรมจําลอง)

คำสั่งนี้กำหนดให้คุณเลือกจากสภาพแวดล้อม App Hosting ที่พร้อมใช้งานของโปรเจ็กต์ ระบบจะผสานการกำหนดค่า App Hosting ที่เจาะจงสภาพแวดล้อม (เช่น "apphosting.staging.yaml") เข้ากับการกำหนดค่า App Hosting พื้นฐาน ("apphosting.yaml") โดยการกำหนดค่าที่เจาะจงสภาพแวดล้อมจะมีความสําคัญเหนือกว่า หากมีข้อมูลลับที่มีชื่อเดียวกันในการกําหนดค่าทั้ง 2 รายการ ระบบจะใช้ข้อมูลลับจากการกําหนดค่าเฉพาะสภาพแวดล้อม

เช่น หากต้องการส่งออกข้อมูลลับไปยังโปรแกรมจำลองจากสภาพแวดล้อมการทดสอบ ให้ทำดังนี้

firebase apphosting:config:export --project <your firebase project Id>

? What configs would you like to export? (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
 ❯◯ Secrets

? Which environment would you like to export secrets from Secret Manager for?:
  ◯ base (apphosting.yaml)
 ❯◯ staging (apphosting.yaml + apphosting.staging.yaml)
  ◯ preview (apphosting.yaml + apphosting.preview.yaml)
i Wrote Secrets as environment variables to apphosting.local.yaml.
i apphosting.local.yaml has been automatically added to your .gitignore.

ระบบจะอัปเดตไฟล์ apphosting.local.yaml (หรือสร้างหากยังไม่มี) ด้วยข้อมูลลับที่ส่งออกเป็นตัวแปรของสภาพแวดล้อม เนื่องจากตอนนี้ไฟล์มีข้อมูลที่ละเอียดอ่อนในรูปแบบข้อความธรรมดา ระบบจะเพิ่มไฟล์นั้นลงในไฟล์ .gitignore โดยอัตโนมัติเพื่อป้องกันไม่ให้มีการคอมมิตไฟล์ดังกล่าวไปยังที่เก็บรีจิสทรีซอร์สโค้ดโดยไม่ได้ตั้งใจ

เรียกใช้โปรแกรมจำลอง

firebase emulators:start

ซึ่งจะเริ่มต้นโปรแกรมจำลองทั้งหมดที่กําหนดไว้ในไฟล์ firebase.json รวมถึงโปรแกรมจำลอง App Hosting