11 คะแนน โดย xguru 2024-10-05 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เมื่อเดือนกรกฎาคมที่ผ่านมา ESLint ได้ประกาศแผนที่จะเปลี่ยน ESLint ให้เป็น linter สำหรับงานทั่วไปมากขึ้น เพื่อรองรับการ lint สำหรับทุกภาษา
  • ตลอดช่วงหลายเดือนที่ผ่านมา ทีมได้ดำเนินการแยกส่วนที่ผูกกับ JavaScript โดยเฉพาะออกมา และผลจากงานนี้ทำให้ตอนนี้ ESLint รองรับการ lint สำหรับ JSON และ Markdown แล้ว

การ lint JSON ด้วย @eslint/json

  • ปลั๊กอิน @eslint/json เป็น language plugin ที่รองรับอย่างเป็นทางการ
  • ปลั๊กอินนี้รองรับการ parse สำหรับ JSON, JSONC (JSON ที่มีคอมเมนต์) และ JSON5
  • หากต้องการใช้ปลั๊กอิน ต้องติดตั้งจาก npm และอัปเดตไฟล์คอนฟิก
  • ปลั๊กอินมี rule แบบ built-in อยู่หลายรายการ และกำลังรอข้อเสนอเพิ่มเติม

การ lint Markdown ด้วย @eslint/markdown

  • ปลั๊กอิน @eslint/markdown เป็นเวอร์ชันถัดไปของ eslint-plugin-markdown และเป็น language plugin ที่รองรับอย่างเป็นทางการ
  • ปลั๊กอินนี้รองรับการ parse และ rules สำหรับ CommonMark และ GitHub-Flavored Markdown
  • หากต้องการใช้ปลั๊กอิน ต้องติดตั้งจาก npm และอัปเดตไฟล์คอนฟิก
  • เช่นเดียวกับปลั๊กอิน JSON ก็มี rule แบบ built-in และกำลังรอข้อเสนอเพิ่มเติม

การเขียนกฎแบบกำหนดเองและการใช้ Code Explorer

  • @eslint/json และ @eslint/markdown จะ parse ซอร์สโค้ดเป็น AST และเดิน AST เพื่อรันกฎ เช่นเดียวกับ JavaScript
  • ดังนั้นจึงสามารถเขียนกฎแบบกำหนดเองสำหรับ JSON และ Markdown ได้เช่นเดียวกับ JavaScript
  • ความแตกต่างหลักคือรูปแบบของ AST โดย JSON ใช้ Momoa AST และ Markdown ใช้ mdast
  • เนื่องจากยังมีทรัพยากรที่ช่วยตรวจสอบ AST รูปแบบอื่นไม่มากนัก จึงได้เปิดตัว Code Explorer
  • ด้วย Code Explorer คุณสามารถดูและสำรวจ AST ของภาษาต่าง ๆ เพื่อช่วยในการสร้างกฎแบบกำหนดเองได้

การเขียน language plugin

  • ภาษาใน ESLint ถูกออกแบบให้สามารถรวมอยู่ในปลั๊กอินใดก็ได้ผ่านคีย์ languages แบบใหม่
  • ปลั๊กอิน @eslint/json และ @eslint/markdown ไม่ได้มีไว้เพียงเพื่อรองรับการ lint สำหรับ JSON และ Markdown เท่านั้น แต่ยังเป็นตัวอย่างของวิธีสร้างภาษาอีกด้วย
  • คุณสามารถดูเอกสารของภาษาเพื่อเรียนรู้วิธีสร้างภาษาของตัวเองได้

บทสรุป

  • การ lint ภาษาอื่นนอกเหนือจาก JavaScript เป็นส่วนหนึ่งของโรดแมป ESLint มาโดยตลอด ดังนั้นการไปถึงหมุดหมายนี้จึงน่าตื่นเต้นมาก
  • เป้าหมายระยะยาวของ ESLint คือทำให้สามารถ lint ไฟล์ทุกประเภทที่ใช้ในโปรเจกต์เว็บได้ ผ่าน language plugin ที่รองรับอย่างเป็นทางการ หรือปลั๊กอินที่ชุมชนสร้างขึ้น
  • ตอนนี้กำลังก้าวไปสู่เป้าหมายนั้นได้ดีแล้วด้วย JavaScript, JSON และ Markdown

1 ความคิดเห็น

 
laeyoung 2024-10-07

Markdown ดีเลย