เครื่องสร้าง ESLintrc

ถัดไป

เครื่องมือนี้จะสร้างการกำหนดค่า .eslintrc.json ที่พร้อมใช้งานจากตัวเลือก 4 อย่าง ได้แก่ สภาพแวดล้อมของเบราว์เซอร์หรือ Node, การรองรับ TypeScript และการรองรับ React โดยเชื่อม eslint:recommended, ปลั๊กอิน TypeScript หรือ React ที่ตรงกัน และการแทนที่กฎที่สมเหตุสมผลบางข้อ เพื่อให้คุณนำผลลัพธ์ไปวางในโปรเจกต์ได้ทันที

วิธีการสร้างไฟล์กำหนดค่า ESLint

  1. 1

    เลือกสภาพแวดล้อม

    ระบุว่าโค้ดทำงานในเบราว์เซอร์, ใน Node.js หรือทั้งสองแบบ เครื่องสร้างจะตั้งค่ารายการ `env` ที่ตรงกัน พร้อมกับ `es2022`

  2. 2

    เปิดใช้งาน TypeScript

    ทำเครื่องหมาย TypeScript แล้วเครื่องสร้างจะเพิ่ม `@typescript-eslint/parser` และปลั๊กอิน TypeScript ที่แนะนำ

  3. 3

    เปิดใช้งาน React

    ทำเครื่องหมาย React แล้วเครื่องสร้างจะเพิ่ม `eslint-plugin-react` พร้อมค่าที่ตั้งไว้ล่วงหน้าตามที่แนะนำ

  4. 4

    สร้าง

    คลิกปุ่มแล้วการกำหนดค่าจะถูกสร้างเป็น JSON ที่จัดรูปแบบให้อ่านง่าย

  5. 5

    คัดลอกไปยังโปรเจกต์ของคุณ

    วางผลลัพธ์ลงใน `.eslintrc.json` และติดตั้งปลั๊กอินที่การกำหนดค่าอ้างถึง

การกำหนดค่าที่สร้างขึ้นประกอบด้วยอะไรบ้าง

เครื่องสร้างจะเริ่มจาก eslint:recommended เสมอ และเพิ่มเฉพาะสิ่งที่ตรงกับตัวเลือกของคุณ:

  • env ที่มี browser และ/หรือ node พร้อมกับ es2022
  • @typescript-eslint/parser และ plugin:@typescript-eslint/recommended เมื่อเปิดใช้ TypeScript
  • plugin:react/recommended เมื่อเปิดใช้ React
  • no-console และ no-unused-vars ตั้งค่าเป็น warn

ผลลัพธ์เป็นออบเจกต์ JSON ธรรมดาในรูปแบบ .eslintrc.json ดั้งเดิม พร้อมวางและเพิ่มกฎของคุณเอง

การเปรียบเทียบระหว่างการกำหนดค่าแบบแบนกับแบบเดิม

ESLint เวอร์ชัน 9 ได้ยกเลิกการใช้รูปแบบ .eslintrc.* และเปลี่ยนมาใช้รูปแบบการกำหนดค่าแบบแบน (eslint.config.js) แทน ซึ่งมีความแตกต่างสำคัญดังนี้:

ประเด็น แบบเดิม (.eslintrc) แบบแบน (eslint.config.js)
รูปแบบ JSON, YAML หรือ CommonJS โมดูล JavaScript แบบ ESM หรือ CommonJS
การสืบทอด extends: ["plugin:react/recommended"] กระจายเข้าไปในอาร์เรย์: ...reactPlugin.configs.recommended
การแทนที่ค่า อาร์เรย์ overrides ที่ใช้รูปแบบ glob หลายอ็อบเจกต์ในอาร์เรย์ที่ส่งออก
ตัวแปรส่วนกลาง env: { browser: true } languageOptions.globals ที่มีการนำเข้าอย่างชัดเจน
การละเว้น ไฟล์ .eslintignore ฟิลด์ ignores ในอาร์เรย์การกำหนดค่า

โครงการใหม่ควรใช้การกำหนดค่าแบบแบน ส่วนโครงการที่มีอยู่เดิมสามารถคงใช้รูปแบบเดิมได้จนถึงเวอร์ชัน 10.x แต่แนะนำให้ย้ายไปยังรูปแบบใหม่

ระบบนิเวศของปลั๊กอิน

ปลั๊กอินสำหรับโปรเจกต์ React/TS ที่พบได้ทั่วไป:

@typescript-eslint/eslint-plugin
@typescript-eslint/parser
eslint-plugin-react
eslint-plugin-react-hooks
eslint-plugin-jsx-a11y
eslint-plugin-import
eslint-config-prettier

นั่นคือแพ็กเกจทั้งหมด 6 ชุดสำหรับการตั้งค่าที่มีความเห็นเฉพาะตัวในระดับปานกลาง เครื่องสร้างจะเพิ่มเฉพาะที่คุณเลือก คุณจึงติดตั้งเฉพาะสิ่งที่การกำหนดค่าอ้างถึง

การอยู่ร่วมกับ Prettier

Prettier ทำหน้าที่ดูแลการจัดรูปแบบ ในขณะที่ ESLint จะดูแลความถูกต้องของโค้ดและรูปแบบการเขียนโค้ดนอกเหนือจากการจัดรูปแบบ เพื่อหลีกเลี่ยงความขัดแย้ง:

  1. ติดตั้ง eslint-config-prettier และเพิ่มเข้าไปเป็นรายการสุดท้ายในไฟล์ extends/config ของคุณ
  2. จะปิดใช้งานกฎทั้งหมดของ ESLint ที่ขัดแย้งกับผลลัพธ์ที่ได้จาก Prettier
  3. รันโปรแกรม Prettier แยกต่างหาก (เมื่อบันทึกในตัวแก้ไข ขณะรอการยืนยันการเปลี่ยนแปลง และในขั้นตอน CI)

อย่าใช้ eslint-plugin-prettier ในโปรเจกต์ใหม่ เนื่องจากมันจะทำให้ ESLint ทำงานช้าลงเนื่องจากการรันโปรแกรม Prettier ภายใน ESLint ควรแยกเครื่องมือทั้งสองออกจากกัน

คำแนะนำในการปรับแต่งกฎ

  • เริ่มจากการปล่อยให้คลายอยู่ก่อน แล้วค่อยๆ ปรับให้แน่นขึ้นทีละน้อย ให้ระบบแสดงคำเตือนก่อนที่จะเกิดข้อผิดพลาด
  • การกำหนดค่าแทนสำหรับการทดสอบ: ไฟล์ทดสอบมักต้องใช้ค่า no-unused-expressions ในรูปแบบที่ผ่อนปรน และต้องมีการใช้งานตัวแปรระดับโลก (global variables) ของ Jest ได้
  • การกำหนดค่าแทนสำหรับสคริปต์: สคริปต์ที่ใช้ในการสร้างอาจต้องการใช้ค่าระดับโนด (Node globals) โดยไม่จำเป็นต้องเพิ่ม env: node ในระดับทั่วไป
  • การแก้ไขกฎในเอกสาร: การเปลี่ยนแปลงกฎแต่ละครั้งควรมาพร้อมคำอธิบายเพื่อชี้แจงเหตุผล

ค่ากำหนดการที่ตรงกับโปรแกรมแก้ไขของคุณ

VS Code จำเป็นต้องมีการติดตั้งและกำหนดค่า ESLint extension ไว้แล้ว ให้เพิ่ม ESLint extension เหล่านี้ลงในการตั้งค่าพื้นที่ทำงาน เพื่อให้ระบบแก้ไขข้อผิดพลาดโดยอัตโนมัติเมื่อบันทึกไฟล์

{
  "editor.codeActionsOnSave": { "source.fixAll.eslint": "explicit" },
  "eslint.validate": ["javascript", "typescript", "javascriptreact", "typescriptreact"]
}

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

สำหรับโปรเจกต์ใหม่ ให้ใช้รูปแบบการกำหนดค่าแบบแบน (eslint.config.js) เครื่องสร้างนี้จะส่งออกรูปแบบ .eslintrc.json ดั้งเดิม ซึ่ง ESLint อ่านได้โดยตรงในโหมด legacy ส่วนตารางเปรียบเทียบด้านบนแสดงสิ่งที่เปลี่ยนไปหากคุณย้ายในภายหลัง

ใช่ หากคุณกำลังใช้ TypeScript ตัวกำหนดค่า @typescript-eslint/parser และ @typescript-eslint/eslint-plugin จะช่วยให้ระบบตรวจสอบข้อผิดพลาดสามารถทำงานได้อย่างเหมาะสมเมื่อจับคู่กับ TypeScript ส่วนสำหรับกฎที่คำนึงถึงชนิดข้อมูล (ไม่เพียงแค่ไวยากรณ์) ควรกำหนดค่าตัววิเคราะห์โค้ดด้วย project: './tsconfig.json' ด้วย

โดยปกติแล้วมักจะไม่มีการระบุข้อมูลการพึ่งพาที่จำเป็นในกระบวนการ CI โปรดตรวจสอบให้แน่ใจว่า @typescript-eslint/* ปลั๊กอิน และเวอร์ชันของ ESLint มีความสอดคล้องกันระหว่างระบบท้องถิ่นกับระบบ CI และควรใช้ npm ci (ไม่ใช่ npm install) ในระบบ CI เพื่อให้สอดคล้องกับไฟล์ล็อกไฟล์

ไม่ การเลือกของคุณใช้เพื่อสร้างการกำหนดค่าเท่านั้น ไม่มีการจัดเก็บ และไม่มีการแชร์ให้บุคคลที่สาม

เครื่องมือที่เกี่ยวข้อง

ตารางอ้างอิง ASCII

ตาราง ASCII ครบตั้งแต่ 0 ถึง 127 พร้อมค่าเลขฐานสิบ ฐานสิบหก ฐานแปด ฐานสอง และรูปแบบการอ้างอิงอักขระแบบตัวเลขของ HTML รวม NUL, LF และ DEL

อ้างอิงตัวอักษร HTML

รายการที่สามารถค้นหาได้ขององค์ประกอบ HTML พร้อมรหัสชื่อและรหัสตัวเลข รวมถึงฟังก์ชันสำเนาด้วยคลิกเดียวสำหรับตัวอักษรพิเศษและสัญลักษณ์ต่างๆ

ตารางอ้างอิงแป้นพิมพ์ลัด

ค้นหาแป้นพิมพ์ลัดเริ่มต้นตามเอกสารของ VS Code, Chrome และ Bash ที่ใช้ GNU Readline บน macOS, Windows และ Linux

เครื่องสร้างตัวอักษรสุ่ม

สร้างตัวอักษร A-Z แบบสุ่ม เลือกจำนวน ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก หรือแบบผสม แล้วใช้กับเกม โจทย์ หรือกิจกรรมในห้องเรียน

ตัวลดรูปพีชคณิตบูลีน

ประเมินนิพจน์บูลีนสำหรับทุกชุดอินพุตและดูตารางค่าความจริงที่สมบูรณ์ รองรับตัวแปรสูงสุดห้าตัวและตัวดำเนินการ &, |, !, ^

เครื่องมือตรวจสอบหมายเลขโทรศัพท์

ตรวจสอบโครงสร้างหมายเลขตามประเทศ พร้อมดูภูมิภาค ประเภท และรูปแบบ E.164 ระหว่างประเทศ ในประเทศ และ RFC 3966

เครื่องมือนี้มีให้บริการในภาษาอื่น