เว็บไซต์ | กำหนดค่า ESLint | กฎ | มีส่วนร่วมใน ESLint | รายงานข้อบกพร่อง | หลักปฏิบัติ | ทวิตเตอร์ | ไม่ลงรอยกัน | มาสโตดอน
ESLint เป็นเครื่องมือสำหรับระบุและรายงานรูปแบบที่พบในโค้ด ECMAScript/JavaScript ในหลาย ๆ ด้าน มันคล้ายกับ JSLint และ JSHint โดยมีข้อยกเว้นบางประการ:
สิ่งที่จำเป็นต้องมี: Node.js ( ^18.18.0
, ^20.9.0
หรือ >=21.1.0
) ที่สร้างขึ้นด้วยการสนับสนุน SSL (หากคุณใช้การแจกจ่าย Node.js อย่างเป็นทางการ จะมี SSL ในตัวเสมอ)
คุณสามารถติดตั้งและกำหนดค่า ESLint โดยใช้คำสั่งนี้:
npm init @eslint/config@latest
หลังจากนั้น คุณสามารถรัน ESLint บนไฟล์หรือไดเร็กทอรีใดก็ได้ดังนี้:
npx eslint yourfile.js
คุณสามารถกำหนดค่ากฎในไฟล์ eslint.config.js
ของคุณได้ดังตัวอย่างนี้:
export default [
{
files : [ "**/*.js" , "**/*.cjs" , "**/*.mjs" ] ,
rules : {
"prefer-const" : "warn" ,
"no-constant-binary-expression" : "error"
}
}
] ;
ชื่อ "prefer-const"
และ "no-constant-binary-expression"
เป็นชื่อของกฎใน ESLint ค่าแรกคือระดับข้อผิดพลาดของกฎและสามารถเป็นหนึ่งในค่าเหล่านี้ได้:
"off"
หรือ 0
- ปิดกฎ"warn"
หรือ 1
- เปิดกฎเป็นการเตือน (ไม่ส่งผลต่อรหัสทางออก)"error"
หรือ 2
- เปิดกฎเป็นข้อผิดพลาด (รหัสออกจะเป็น 1)ระดับข้อผิดพลาดสามระดับช่วยให้คุณสามารถควบคุมวิธีใช้กฎของ ESLint ได้อย่างละเอียด (สำหรับตัวเลือกและรายละเอียดการกำหนดค่าเพิ่มเติม โปรดดูเอกสารการกำหนดค่า)
ทีมงาน ESLint ให้การสนับสนุนอย่างต่อเนื่องสำหรับเวอร์ชันปัจจุบันและการสนับสนุนแบบจำกัดเป็นเวลาหกเดือนสำหรับเวอร์ชันก่อนหน้า การสนับสนุนแบบจำกัดประกอบด้วยการแก้ไขข้อบกพร่องที่สำคัญ ปัญหาด้านความปลอดภัย และปัญหาความเข้ากันได้เท่านั้น
ESLint ให้การสนับสนุนเชิงพาณิชย์สำหรับเวอร์ชันปัจจุบันและเวอร์ชันก่อนหน้าผ่านพันธมิตรของเรา Tidelift และ HeroDevs
ดูการสนับสนุนเวอร์ชันสำหรับรายละเอียดเพิ่มเติม
ESLint ปฏิบัติตามหลักจรรยาบรรณของมูลนิธิ OpenJS
ก่อนที่จะยื่นเรื่อง โปรดอ่านหลักเกณฑ์สำหรับสิ่งที่คุณรายงาน:
ใช่ ESLint รองรับการแยกวิเคราะห์ไวยากรณ์ JSX ในตัว (ต้องเปิดใช้งานในการกำหนดค่า) โปรดทราบว่าการรองรับไวยากรณ์ JSX นั้นไม่ เหมือนกับการรองรับ React React ใช้ความหมายเฉพาะกับไวยากรณ์ JSX ที่ ESLint ไม่รู้จัก เราขอแนะนำให้ใช้ eslint-plugin-react หากคุณใช้ React และต้องการ React semantics
ไม่ ESLint และ Prettier มีงานที่แตกต่างกัน ESLint เป็น linter (มองหารูปแบบที่เป็นปัญหา) และ Prettier เป็นตัวจัดรูปแบบโค้ด การใช้เครื่องมือทั้งสองเป็นเรื่องปกติ โปรดดูเอกสารประกอบของ Prettier เพื่อเรียนรู้วิธีกำหนดค่าให้ทำงานร่วมกันได้ดี
ESLint ได้รับการสนับสนุนอย่างเต็มที่สำหรับ ECMAScript 3, 5 และทุกปีตั้งแต่ปี 2015 จนถึงข้อกำหนดขั้นที่ 4 ล่าสุด (ค่าเริ่มต้น) คุณสามารถตั้งค่าไวยากรณ์ ECMAScript และการตั้งค่าอื่นๆ ที่ต้องการ (เช่น ตัวแปรร่วม) ผ่านการกำหนดค่าได้
โปรแกรมแยกวิเคราะห์ของ ESLint รองรับมาตรฐาน ECMAScript สุดท้ายล่าสุดอย่างเป็นทางการเท่านั้น เราจะทำการเปลี่ยนแปลงกฎหลักเพื่อหลีกเลี่ยงข้อขัดข้องในข้อเสนอไวยากรณ์ ECMAScript ระยะที่ 3 (ตราบใดที่กฎเหล่านั้นถูกนำไปใช้โดยใช้ไวยากรณ์ ESTree ทดลองที่ถูกต้อง) เราอาจทำการเปลี่ยนแปลงกฎหลักเพื่อให้ทำงานได้ดียิ่งขึ้นกับส่วนขยายภาษา (เช่น JSX, Flow และ TypeScript) ในแต่ละกรณี
ในกรณีอื่นๆ (รวมถึงหากกฎจำเป็นต้องเตือนในกรณีไม่มากก็น้อยเนื่องจากไวยากรณ์ใหม่ แทนที่จะแค่ไม่ขัดข้อง) เราขอแนะนำให้คุณใช้ตัวแยกวิเคราะห์และ/หรือปลั๊กอินกฎอื่นๆ หากคุณใช้ Babel คุณสามารถใช้ @babel/eslint-parser และ @babel/eslint-plugin เพื่อใช้ตัวเลือกใดๆ ที่มีอยู่ใน Babel
เมื่อนำคุณลักษณะภาษาไปใช้ในมาตรฐาน ECMAScript (ระยะที่ 4 ตามกระบวนการ TC39) เราจะยอมรับปัญหาและดึงคำขอที่เกี่ยวข้องกับคุณลักษณะใหม่ โดยขึ้นอยู่กับแนวทางการมีส่วนร่วมของเรา ในระหว่างนี้ โปรดใช้ตัวแยกวิเคราะห์และปลั๊กอินที่เหมาะสมสำหรับคุณลักษณะทดลองของคุณ
ESLint อัปเดตเวอร์ชัน Node.js ที่รองรับด้วย ESLint รุ่นหลักแต่ละรุ่น ในเวลานั้น เวอร์ชัน Node.js ที่รองรับของ ESLint จะได้รับการอัปเดตเป็น:
ESLint คาดว่าจะทำงานร่วมกับเวอร์ชัน Node.js ที่เผยแพร่หลังจาก Node.js เวอร์ชันปัจจุบัน
โปรดดูคู่มือเริ่มต้นใช้งานฉบับย่อสำหรับเวอร์ชัน Node.js ที่ได้รับการสนับสนุนอย่างเป็นทางการสำหรับรุ่น ESLint ที่ระบุ
เปิดการสนทนาหรือหยุดโดยเซิร์ฟเวอร์ Discord ของเรา
ไฟล์ล็อค เช่น package-lock.json
มีประโยชน์สำหรับแอปพลิเคชันที่ปรับใช้ ช่วยให้มั่นใจได้ว่าการพึ่งพามีความสอดคล้องกันระหว่างสภาพแวดล้อมและการปรับใช้ทั่วทั้งระบบ
แพ็คเกจเช่น eslint
ที่ได้รับการเผยแพร่ไปยังรีจิสทรี npm จะไม่รวมไฟล์ล็อค npm install eslint
เนื่องจากผู้ใช้จะเคารพข้อ จำกัด ของเวอร์ชันใน package.json
ของ ESLint ESLint และการขึ้นต่อกันของมันจะรวมอยู่ในไฟล์ล็อคของผู้ใช้หากมีอยู่ แต่ไฟล์ล็อคของ ESLint จะไม่ถูกนำมาใช้
เราตั้งใจไม่ล็อกเวอร์ชันการขึ้นต่อกัน เพื่อที่เราจะได้มีเวอร์ชันการขึ้นต่อกันที่เข้ากันได้ล่าสุดในการพัฒนาและ CI ที่ผู้ใช้ของเราได้รับเมื่อติดตั้ง ESLint ในโปรเจ็กต์
บล็อกของ Twilio มีการเจาะลึกเพื่อเรียนรู้เพิ่มเติม
เรามีกำหนดการออกทุกสองสัปดาห์ในวันศุกร์หรือวันเสาร์ คุณสามารถติดตามปัญหาการเผยแพร่เพื่อดูการอัปเดตเกี่ยวกับกำหนดการของการเผยแพร่ใดๆ ที่เฉพาะเจาะจงได้
ESLint ให้ความสำคัญกับความปลอดภัยอย่างจริงจัง เราทำงานอย่างหนักเพื่อให้แน่ใจว่า ESLint ปลอดภัยสำหรับทุกคน และปัญหาด้านความปลอดภัยได้รับการแก้ไขอย่างรวดเร็วและมีความรับผิดชอบ อ่านนโยบายความปลอดภัยฉบับเต็ม
ESLint ติดตามเวอร์ชันเชิงความหมาย อย่างไรก็ตาม เนื่องจากลักษณะของ ESLint ในฐานะเครื่องมือตรวจสอบคุณภาพโค้ด จึงไม่ชัดเจนเสมอไปเมื่อเกิดการชนของเวอร์ชันรองหรือเวอร์ชันหลัก เพื่อช่วยชี้แจงเรื่องนี้สำหรับทุกคน เราได้กำหนดนโยบายการกำหนดเวอร์ชันเชิงความหมายต่อไปนี้สำหรับ ESLint:
eslint:recommended
ได้รับการอัปเดตและจะส่งผลให้มีข้อผิดพลาดในการ Lining น้อยลงอย่างมาก (เช่น การลบกฎ)eslint:recommended
ได้รับการอัปเดตและอาจส่งผลให้เกิดข้อผิดพลาด Linting ใหม่ (เช่น การเพิ่มกฎ การอัปเดตตัวเลือกกฎส่วนใหญ่) ตามนโยบายของเรา การอัปเดตเล็กๆ น้อยๆ อาจรายงานข้อผิดพลาด Linting มากกว่ารุ่นก่อนหน้า (เช่น จากการแก้ไขข้อบกพร่อง) ด้วยเหตุนี้ เราขอแนะนำให้ใช้เครื่องหมายทิลเดอ ( ~
) ใน package.json
เช่น "eslint": "~3.1.0"
เพื่อรับประกันผลลัพธ์ของงานสร้างของคุณ
กฎรูปแบบจะถูกระงับตามนโยบายของเราเกี่ยวกับวิธีที่เราประเมินกฎใหม่และการเปลี่ยนแปลงกฎ ซึ่งหมายความว่า:
คนเหล่านี้ทำให้โครงการดำเนินต่อไปและเป็นแหล่งข้อมูลสำหรับความช่วยเหลือ
ผู้ที่จัดการการเผยแพร่ ตรวจสอบคำขอฟีเจอร์ และพบปะกันเป็นประจำเพื่อให้แน่ใจว่า ESLint ได้รับการดูแลอย่างเหมาะสม