คำถามที่พบบ่อย

รายงานปัญหา ดูแหล่งที่มา

หากมีข้อสงสัยหรือต้องการความช่วยเหลือ โปรดดูการรับความช่วยเหลือ

Bazel คืออะไร

Bazel เป็นเครื่องมือที่สร้างและทดสอบซอฟต์แวร์โดยอัตโนมัติ งานสร้างที่รองรับ ได้แก่ การคอมไพเลอร์และเรียกใช้ Linker เพื่อสร้างโปรแกรมและไลบรารีที่ปฏิบัติการได้ ตลอดจนรวบรวมแพ็กเกจที่ทําให้ใช้งานได้สําหรับ Android, iOS และสภาพแวดล้อมเป้าหมายอื่นๆ ได้ Bazel คล้ายกับเครื่องมืออื่นๆ เช่น แบรนด์ มด กราดเดิล บัค กางเกง และ Maven

ความพิเศษของ Bazel คืออะไร

Bazel ออกแบบมาให้เหมาะกับแนวทางการพัฒนาซอฟต์แวร์ที่ Google ซึ่งมีฟีเจอร์ต่อไปนี้

  • การรองรับหลายภาษา: Bazel รองรับหลายภาษา และสามารถขยายออกเพื่อรองรับภาษาโปรแกรมที่กําหนดเอง
  • ภาษาของบิลด์ระดับสูง: โปรเจ็กต์จะอธิบายเป็นภาษา BUILD ซึ่งเป็นรูปแบบข้อความสั้นๆ ที่อธิบายโปรเจ็กต์ว่าเป็นชุดห้องสมุด ไบนารี และการทดสอบขนาดเล็กที่เชื่อมถึงกัน ในทางตรงกันข้าม เครื่องมือต่างๆ เช่น ผู้ผลิต จะต้องอธิบายถึงแต่ละไฟล์และการเรียกใช้คอมไพเลอร์
  • การรองรับหลายแพลตฟอร์ม: สามารถใช้เครื่องมือเดียวกันและไฟล์ BUILD เดียวกันเพื่อสร้างซอฟต์แวร์สําหรับสถาปัตยกรรมต่างๆ รวมถึงแพลตฟอร์มต่างๆ ได้ด้วย Google ใช้ Bazel เพื่อสร้างทุกอย่างตั้งแต่แอปพลิเคชันเซิร์ฟเวอร์ที่ทํางานบนระบบในศูนย์ข้อมูลของเราไปจนถึงแอปไคลเอ็นต์ที่ใช้งานบนโทรศัพท์มือถือ
  • การทําซ้ํา: ในไฟล์ BUILD ไลบรารี การทดสอบ และไบนารีแต่ละรายการต้องระบุทรัพยากร Dependency โดยตรงก่อน Bazel ใช้ข้อมูลทรัพยากร Dependency นี้เพื่อให้ทราบว่าต้องสร้างอะไรใหม่เมื่อคุณทําการเปลี่ยนแปลงในไฟล์ต้นฉบับ และงานใดที่ทํางานพร้อมกันได้ ซึ่งหมายความว่าบิลด์ทั้งหมดจะเพิ่มขึ้นและจะให้ผลลัพธ์ที่เหมือนกันเสมอ
  • ปรับขนาดได้: Bazel สามารถจัดการงานสร้างขนาดใหญ่ได้ ที่ Google นั้นเป็นเรื่องปกติที่ไบนารีเซิร์ฟเวอร์จะมีไฟล์ต้นฉบับ 100,000 ไฟล์ และไม่มีการสร้างไฟล์ที่เปลี่ยนแปลงจะใช้เวลาประมาณ 200 มิลลิวินาที

ทําไม Google ถึงไม่ใช้...

  • นินจา: เครื่องมือเหล่านี้ให้การควบคุมที่แน่นอนอย่างยิ่งว่าคําสั่งใดจะถูกเรียกใช้เพื่อสร้างไฟล์ แต่จะขึ้นอยู่กับผู้ใช้ที่จะเขียนกฎที่ถูกต้อง
    • ผู้ใช้จะโต้ตอบกับ Bazel ในระดับที่สูงกว่า เช่น Bazel มีกฎในตัวสําหรับ "Java Testing", "C++ไบนารี" และกฎอย่าง "แพลตฟอร์มเป้าหมาย" และ "แพลตฟอร์มโฮสต์" กฎเหล่านี้ได้รับการทดสอบเทียบกับกฎที่เกี่ยวข้องแล้ว
  • มดและ Maven: มดและ Maven มุ่งเน้นไปยัง Java เป็นหลัก ขณะที่ Bazel จัดการหลายภาษา Bazel สนับสนุนการแยกย่อยฐานของโค้ดในหน่วยเล็กๆ ที่นํามาใช้ใหม่ได้ และสร้างขึ้นใหม่ได้โดยจําเป็นต้องสร้างใหม่เท่านั้น วิธีนี้ช่วยเร่งการพัฒนาเมื่อทํางานกับฐานของโค้ดที่ใหญ่ขึ้น
  • Gradle: ไฟล์การกําหนดค่าของ Bazel มีโครงสร้างมากกว่า Gradle มาก ทําให้ Bazel เข้าใจว่าการทํางานแต่ละอย่างคืออะไร ซึ่งทําให้เกิดการโหลดพร้อมกันมากยิ่งขึ้นและทําซ้ําได้
  • Pants, Buck: เครื่องมือทั้งสองชิ้นสร้างขึ้นและพัฒนาโดยอดีต Googler ที่ Twitter และ Foursquare และ Facebook ตามลําดับ เราจําลองแบบมาจาก Bazel แต่ชุดฟีเจอร์มีความแตกต่างกัน จึงไม่ถือว่าเป็นทางเลือกที่ดีสําหรับเรา

บาเซลมาจากไหน

Bazel คือเครื่องมือที่ Google ใช้สร้างซอฟต์แวร์เซิร์ฟเวอร์ภายใน และได้ขยายขึ้นเพื่อสร้างซอฟต์แวร์อื่นๆ ด้วย เช่น แอปบนอุปกรณ์เคลื่อนที่ (iOS, Android) ที่เชื่อมต่อกับเซิร์ฟเวอร์ของเรา

คุณเขียนเครื่องมือภายในเป็นโอเพนซอร์สใหม่ใช่ไหม เป็นส้อมหรือเปล่า

Bazel แชร์โค้ดส่วนใหญ่ด้วยเครื่องมือภายในและใช้กฎสําหรับบิลด์หลายล้านรายการทุกวัน

ทําไม Google จึงสร้าง Bazel

นานมาแล้วที่ Google สร้างซอฟต์แวร์โดยใช้ Makefile ขนาดใหญ่ที่สร้างขึ้น สิ่งเหล่านี้ทําให้เกิดบิลด์ที่ช้าและไม่น่าเชื่อถือ ซึ่งเริ่มรบกวนประสิทธิภาพการทํางานของนักพัฒนาซอฟต์แวร์และความคล่องตัวของบริษัท Bazel เป็นวิธีแก้ปัญหาเหล่านี้

Bazel ต้องมีคลัสเตอร์บิวด์ไหม

Bazel จะดําเนินการสร้างภายในเครื่องโดยค่าเริ่มต้น อย่างไรก็ตาม Bazel ยังเชื่อมต่อกับคลัสเตอร์บิลด์เพื่อให้สร้างและทดสอบได้เร็วขึ้นด้วย โปรดดูรายละเอียดเพิ่มเติมในเอกสารประกอบการดําเนินการและการแคชระยะไกลและการแคชระยะไกล

กระบวนการพัฒนา Google ทํางานอย่างไร

สําหรับฐานของโค้ดเซิร์ฟเวอร์ของเรา เราจะใช้เวิร์กโฟลว์การพัฒนาต่อไปนี้

  • โค้ดเซิร์ฟเวอร์ทั้งหมดของเราอยู่ในระบบควบคุมเวอร์ชันขนาดใหญ่
  • ทุกคนสร้างซอฟต์แวร์ด้วย Bazel
  • แต่ละทีมเป็นเจ้าของส่วนต่างๆ ของแผนผังแหล่งที่มา และทําให้คอมโพเนนต์พร้อมใช้งานเป็นเป้าหมาย BUILD
  • การแบ่งสาขาจะใช้สําหรับจัดการรุ่นเป็นหลัก ดังนั้นทุกคนจึงพัฒนาซอฟต์แวร์ที่การแก้ไขส่วนหัว

Bazel เป็นรากฐานของปรัชญานี้: เนื่องจาก Bazel กําหนดให้ระบุทรัพยากร Dependency ทั้งหมดอย่างสมบูรณ์ เราจึงคาดการณ์ได้ว่าโปรแกรมและการทดสอบใดจะได้รับผลกระทบจากการเปลี่ยนแปลง และได้รับการตรวจสอบก่อนที่จะส่ง

หากต้องการทราบข้อมูลพื้นฐานเพิ่มเติมเกี่ยวกับขั้นตอนการพัฒนาที่ Google โปรดไปที่บล็อกเครื่องมือการมีส่วนร่วม

เหตุใดคุณจึงเปิด Bazel

การสร้างซอฟต์แวร์ควรสนุกและง่ายดาย บิลด์ที่ช้าและคาดเดาไม่ได้จะเพลิดเพลินกับความสนุกสนานในการจัดโปรแกรม

เหตุใดฉันจึงควรใช้ Bazel

  • Bazel อาจให้เวลาการสร้างที่เร็วขึ้นเนื่องจากจะรวบรวมได้เฉพาะไฟล์ที่ต้องคอมไพล์ใหม่เท่านั้น ในทํานองเดียวกัน ข้ามการทดสอบที่ดําเนินอยู่อีกครั้งซึ่งรู้ว่าไม่มีการเปลี่ยนแปลง
  • Bazel ให้ผลลัพธ์ที่กําหนด เพื่อกําจัดความเอียงระหว่างบิลด์ที่เพิ่มขึ้นและสะอาด แล็ปท็อปและระบบ CI เป็นต้น
  • Bazel สามารถสร้างแอปไคลเอ็นต์และเซิร์ฟเวอร์ต่างๆ ด้วยเครื่องมือเดียวกันจากพื้นที่ทํางานเดียวกัน เช่น เปลี่ยนโปรโตคอลของไคลเอ็นต์/เซิร์ฟเวอร์ในสัญญาผูกมัด 1 การทดสอบ และทดสอบว่าแอปบนอุปกรณ์เคลื่อนที่ที่อัปเดตแล้วดังกล่าวทํางานร่วมกับเซิร์ฟเวอร์ที่อัปเดตแล้วได้ โดยสร้างทั้ง 2 เครื่องมือด้วยเครื่องมือเดียวกัน โดยใช้ประโยชน์จากประโยชน์ทั้งหมดที่กล่าวไว้ก่อนหน้านี้ของ Bazel

ฉันจะดูตัวอย่างได้ไหม

ได้ โปรดดูตัวอย่างแบบง่ายหรืออ่านซอร์สโค้ด Bazel เพื่อดูตัวอย่างที่ซับซ้อนขึ้น

Bazel ดีที่สุดคืออะไร

Bazel โดดเด่นในการสร้างและทดสอบโปรเจ็กต์ด้วยพร็อพเพอร์ตี้ต่อไปนี้

  • โปรเจ็กต์ที่มีฐานของโค้ดขนาดใหญ่
  • โปรเจ็กต์ที่เขียนในภาษาที่คอมไพล์ (หลายภาษา)
  • โปรเจ็กต์ที่ติดตั้งใช้งานในหลายแพลตฟอร์ม
  • โปรเจ็กต์ที่มีการทดสอบจํานวนมาก

ฉันจะเรียกใช้ Bazel ได้ที่ใด

Bazel ทํางานบน Linux, macOS (OS X) และ Windows

การย้ายไปยังแพลตฟอร์ม UNIX อื่นๆ ควรเป็นเรื่องง่ายๆ ตราบใดที่ JDK พร้อมให้บริการสําหรับแพลตฟอร์มนั้น

ฉันไม่ควรใช้ Bazel ทําอะไร

  • บาแซลพยายามใช้เงินในการแคชอย่างชาญฉลาด ซึ่งหมายความว่าจะเรียกใช้การดําเนินการสร้างที่ไม่ควรแคชเอาต์พุตได้ ตัวอย่างเช่น คุณไม่ควรเรียกใช้ขั้นตอนต่อไปนี้จาก Bazel
    • ขั้นตอนการรวบรวมที่ดึงข้อมูลจากอินเทอร์เน็ต
    • ขั้นตอนการทดสอบที่เชื่อมต่อกับอินสแตนซ์ QA ของเว็บไซต์
    • ขั้นตอนการติดตั้งใช้งานที่เปลี่ยนการกําหนดค่าระบบคลาวด์ของเว็บไซต์
  • หากงานสร้างของคุณมีขั้นตอนตามลําดับเพียงไม่กี่ขั้นตอน Bazel อาจให้ความช่วยเหลือได้ไม่มากนัก คุณจะได้รับความเร็วมากขึ้นด้วยการก้าวเข้าสู่เป้าหมายเล็กๆ ที่แยกจากกันอย่างชัดเจนซึ่ง Bazel สามารถทํางานพร้อมกัน

ชุดฟีเจอร์ของ Bazel มีความเสถียรเพียงใด

ฟีเจอร์หลัก (C++, Java และเชลล์) มีการใช้งานอย่างกว้างขวางใน Google จึงได้รับการทดสอบอย่างละเอียดและเลิกใช้งานน้อยมาก ในทํานองเดียวกัน เราทดสอบ Bazel เวอร์ชันใหม่กับเป้าหมายหลายแสนรายการทุกวันเพื่อหาการเกิดปัญหาซ้ํา และเราเปิดตัวเวอร์ชันใหม่หลายครั้งในทุกเดือน

กล่าวโดยสรุปคือ Bazel ควรใช้งานได้เฉพาะฟีเจอร์ทดลองเท่านั้น การเปลี่ยนแปลงกฎที่ไม่ใช่การทดสอบจะเข้ากันได้แบบย้อนหลัง ดูรายการสถานะการรองรับฟีเจอร์โดยละเอียดเพิ่มเติมได้ในเอกสารการสนับสนุน

Bazel เป็นไบนารีที่มีความเสถียรเพียงใด

ภายใน Google เราตรวจสอบว่าข้อขัดข้องของ Bazel เกิดขึ้นน้อยมาก ซึ่งควรเก็บไว้สําหรับฐานของโค้ดแบบโอเพนซอร์สด้วย

ฉันจะเริ่มใช้ Bazel ได้อย่างไร

ดูการเริ่มต้นใช้งาน

RTB ไม่ช่วยแก้ปัญหาความสามารถในการทําซ้ําไหม

เมื่อใช้ RTB คุณสามารถสร้างแซนด์บ็อกซ์ได้อย่างง่ายดายด้วยระบบปฏิบัติการที่เสถียร เช่น Ubuntu 12.04, Fedora 21 วิธีนี้จะช่วยแก้ปัญหาซ้ําสําหรับสภาพแวดล้อมของระบบ กล่าวคือ "ฉันต้องใช้ /usr/bin/c++ เวอร์ชันไหน"

HTTPS ไม่ได้กล่าวถึงความสามารถในการทําซ้ําเกี่ยวกับการเปลี่ยนแปลงในซอร์สโค้ด การเรียกใช้ Make Up ด้วย Makefile ที่มีการปรับแต่งให้ไม่สมบูรณ์แบบในคอนเทนเนอร์คอนเทนเนอร์ยังคงให้ผลลัพธ์ที่คาดการณ์ไม่ได้

Google จะตรวจสอบเครื่องมือในการควบคุมแหล่งที่มาเพื่อทําซ้ํา ด้วยวิธีนี้ เราสามารถตรวจสอบการเปลี่ยนแปลงในเครื่องมือ ("อัปเกรด GCC เป็น 4.6.1") ด้วยกลไกเดียวกันกับการเปลี่ยนแปลงไลบรารีพื้นฐาน ("การตรวจสอบขอบเขตที่จํากัดใน OpenSSL")

ฉันจะสร้างไบนารีสําหรับการติดตั้งใช้งานใน Dock ได้ไหม

Bazel ให้คุณสร้างไบนารีแบบสแตนด์อโลนแบบคงที่ใน C/C++ และไฟล์ Jar ในตัวสําหรับ Java ทรัพยากร Dependency นี้ทํางานโดยใช้ระบบ UNIX ปกติน้อย ดังนั้นการติดตั้งในคอนเทนเนอร์คอนเทนเนอร์จึงควรใช้งานง่าย

Bazel มีแบบแผนในการกําหนดโปรแกรมที่ซับซ้อนมากขึ้น เช่น โปรแกรม Java ที่ใช้ไฟล์ข้อมูลหรือเรียกใช้โปรแกรมอื่นเป็นกระบวนการย่อย นอกจากนี้ ระบบยังรวมแพ็กเกจดังกล่าวเข้าด้วยกันเป็นที่เก็บถาวรแบบสแตนด์อโลนเพื่อให้ติดตั้งใช้งานบนระบบที่แตกต่างกันได้ รวมถึงอิมเมจแท่นชาร์จ

ฉันจะสร้างอิมเมจแท่นชาร์จด้วย Bazel ได้ไหม

ได้ คุณใช้กฎ Discover เพื่อสร้างรูปภาพ Dock ที่ทําซ้ําได้

Bazel จะทําให้บิวด์ของฉันทําซ้ําโดยอัตโนมัติได้ไหม

สําหรับไบนารีของ Java และ C++ ใช่ ในกรณีที่คุณไม่ได้เปลี่ยนเครื่องมือเชน หากคุณมีขั้นตอนที่เกี่ยวข้องกับสูตรอาหารที่กําหนดเอง (เช่น การดําเนินการไบนารีผ่านสคริปต์ Shell ภายในกฎ) คุณจะต้องระมัดระวังเป็นพิเศษ:

  • อย่าใช้ทรัพยากร Dependency ที่ไม่ได้ประกาศ การดําเนินการที่ทําแซนด์บ็อกซ์ (–spawn_strategy=sandboxed, only on Linux) สามารถช่วยค้นหาทรัพยากร Dependency ที่ไม่ได้ประกาศได้
  • หลีกเลี่ยงการจัดเก็บการประทับเวลาและ User-ID ในไฟล์ที่สร้างขึ้น ไฟล์ ZIP และที่เก็บถาวรอื่นๆ มีแนวโน้มที่จะดําเนินการนี้มากที่สุด
  • หลีกเลี่ยงการเชื่อมต่อกับเครือข่าย การดําเนินการที่ทําแซนด์บ็อกซ์ยังช่วยในส่วนนี้ได้
  • หลีกเลี่ยงการใช้กระบวนการสุ่มตัวเลข โดยเฉพาะการข้ามผ่านพจนานุกรมจะแบบสุ่มในภาษาโปรแกรมต่างๆ

คุณมีรุ่นไบนารีหรือไม่

ได้ คุณสามารถดูไบนารีของการเผยแพร่ล่าสุดและอ่านนโยบายการเผยแพร่ของเรา

ฉันใช้ Eclipse/IntelliJ/XCode Bazel ทํางานร่วมกับ IDE อย่างไร

สําหรับ IntelliJ โปรดดูปลั๊กอิน IntelliJ with Bazel

โปรดดู Tulsi สําหรับ XCode

ดู Eclipse ได้ที่ปลั๊กอิน E4B

สําหรับ IDE อื่นๆ โปรดดูบล็อกโพสต์เกี่ยวกับวิธีการทํางานของปลั๊กอินเหล่านี้

ฉันใช้ Jenkins/RoundCI/TravisCI Bazel ทํางานร่วมกับระบบ CI อย่างไร

Bazel ส่งคืนรหัสที่ไม่ใช่ 0 หากคําขอสร้างหรือทดสอบล้มเหลว และควรจะเพียงพอสําหรับการผสานรวม CI พื้นฐาน เนื่องจาก Bazel ไม่จําเป็นต้องใช้บิลด์ที่ถูกต้องเพื่อความถูกต้อง คุณไม่ควรกําหนดค่าระบบ CI ให้ล้างก่อนที่จะเริ่มต้นการเรียกใช้/ทดสอบ

รายละเอียดเพิ่มเติมเกี่ยวกับรหัสการออกจะอยู่ในคู่มือผู้ใช้

ฟีเจอร์ในอนาคตที่ Bazel มีอะไรบ้าง

โปรดดูแผนที่ถนน

ฉันใช้ Bazel สําหรับโปรเจ็กต์ INSERT language HERE ได้ไหม

Bazel ขยายได้ ทุกคนเพิ่มการรองรับภาษาใหม่ได้ หลายภาษารองรับ: สร้างรายการสารานุกรมสําหรับรายการคําแนะนํา และ awesomebazel.com สําหรับรายการที่ครอบคลุมมากขึ้น

หากต้องการพัฒนาส่วนขยายหรือเรียนรู้วิธีการทํางานของส่วนขยาย โปรดดูเอกสารประกอบสําหรับส่วนขยาย Bazel

ฉันจะมีส่วนร่วมกับฐานของรหัส Bazel ได้ไหม

ดูหลักเกณฑ์การมีส่วนร่วม

ทําไมการพัฒนาบางอย่างยังไม่เสร็จสมบูรณ์

เรายังคงต้องปรับเปลี่ยนอินเทอร์เฟซระหว่างโค้ดสาธารณะใน Bazel และส่วนขยายภายในของเราเป็นประจํา จึงทําให้การพัฒนาแบบเปิดเป็นไปได้ยาก

คุณจัดหา Bazel แบบโอเพนซอร์สเสร็จแล้วใช่ไหม

Bazel เป็นแหล่งข้อมูลแบบเปิดและอยู่ระหว่างดําเนินการ โดยเฉพาะอย่างยิ่ง เรายังคงพยายามหาการจัดเตรียมแหล่งที่มาดังนี้

  • การทดสอบ 1 หน่วยสําหรับหน่วยทดสอบและการผสานรวมของเรา (ซึ่งจะช่วยให้เผยแพร่แพตช์ได้ง่ายขึ้น)
  • การผสานรวม IDE เต็มรูปแบบ

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

มีส่วนใดของ Bazel ที่จะไม่มีโอเพนซอร์สไหม

ใช่ ฐานของโค้ดบางส่วนผสานรวมกับเทคโนโลยีเฉพาะของ Google หรือเรากําลังมองหาวิธีแก้ตัว (หรือทั้ง 2 อย่างนี้ผสมกัน) GitHub ไม่มีส่วนเหล่านี้ของฐานของโค้ดและอาจไม่มีอยู่เลย

ฉันจะติดต่อทีมงานได้อย่างไร

โปรดติดต่อได้ที่ bazel- นอกจากนี้@@@groups.

ฉันจะรายงานข้อบกพร่องได้จากที่ใด

เปิดปัญหาใน GitHub

คําว่า "Blaze" ในฐานของโค้ดมีอะไรบ้าง

นี่คือชื่อภายในสําหรับเครื่องมือ โปรดดูที่ Blaze เป็น Bazel

ทําไมโครงการอื่นๆ ของ Google (Android, Chrome) ใช้เครื่องมือสร้างอื่นๆ

Bazel ยังไม่พร้อมใช้งานภายนอกจนกว่าการเปิดตัวเวอร์ชันแรก (อัลฟ่า) ดังนั้นโปรเจ็กต์โอเพนซอร์ส เช่น Chromium และ Android จะใช้โปรเจ็กต์นี้ไม่ได้ นอกจากนี้ การขาดการรองรับ Windows เดิมยังเป็นปัญหาในการสร้างแอปพลิเคชัน Windows เช่น Chrome อีกด้วย เนื่องจากโปรเจ็กต์มีอายุครบกําหนดและมีความเสถียรมากกว่า โปรเจ็กต์โอเพนซอร์ส Android กําลังย้ายข้อมูลไปยัง Bazel

คําว่า "Bazel" ออกเสียงยังไง

เหมือนกับ "basil" (สมุนไพร) ในภาษาอังกฤษแบบสหรัฐอเมริกา นั่นคือ "BAY-zel" คล้องจองกับคําว่า "hazel" IPA: /{/9}beɪzüəl/