- เมื่อเดือนกรกฎาคมที่ผ่านมา 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 ความคิดเห็น
Markdown ดีเลย