ปิดกฎ eslint สำหรับไฟล์เฉพาะ


404

เป็นไปได้ไหมที่จะปิดกฏ eslint สำหรับไฟล์ทั้งหมด? บางอย่างเช่น:

// eslint-disable-file no-use-before-define 

(คล้ายกับ eslint-disable-line) มันเกิดขึ้นกับฉันบ่อยครั้งที่ในไฟล์บางไฟล์ฉันกำลังละเมิดกฎเฉพาะในหลาย ๆ สถานที่ซึ่งถือว่าใช้ได้สำหรับไฟล์นั้น แต่ฉันไม่ต้องการปิดการใช้งาน กฎสำหรับโครงการทั้งหมดและฉันไม่ต้องการปิดใช้งานกฎอื่น ๆ สำหรับไฟล์เฉพาะนั้น


1
คุณสามารถเพิ่มกฎเป็นบรรทัดแรกของไฟล์ดังนี้: / * eslint no-use-before-define: 2 * /
joaumg

2
สมบูรณ์แบบที่ได้ผลขอบคุณ ฉันเพิ่งมองข้ามส่วนในเอกสาร: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

คำตอบ:


404

คุณสามารถปิด / เปลี่ยนกฎเฉพาะสำหรับไฟล์ได้โดยกำหนดค่าไว้ที่ด้านบนของไฟล์

/* eslint no-use-before-define: 0 */  // --> OFF

or

/* eslint no-use-before-define: 2 */  // --> ON

ข้อมูลเพิ่มเติม


8
มีวิธีที่จะวางกฎในการ.eslintrcบังคับใช้กฎเฉพาะไฟล์ทั้งหมดเช่นนี้ที่ด้านบนของไฟล์หรือไม่?
Jeremy

9
@ Jeremy เห็นคำตอบของฉัน คุณเพียงแค่ต้องเพิ่ม.eslintignoreไฟล์ลงในไดเรกทอรีรากโครงการของคุณ
prograhammer

วิธีการเกี่ยวกับไฟล์ HTML หรือ ejs ที่ดูเหมือนว่าจะไม่ทำงาน.eslintignoreและ/* eslint no-use-before-define: 0 */ // --> OFFอย่างใดอย่างหนึ่ง?
Jeet

เป็นไปได้ที่จะทำการละเว้นหลายรายการในหนึ่งบรรทัด?
cheshireoctopus

4
ฉันลอง / * eslint-disable rule-name * / และมันใช้ได้
Marcos Pereira

304

หากต้องการปิดใช้งานกฎเฉพาะสำหรับไฟล์:

/* eslint-disable no-use-before-define */

โปรดทราบว่ามีข้อบกพร่องใน eslint ที่ความคิดเห็นบรรทัดเดียวจะไม่ทำงาน -

// eslint-disable max-classes-per-file
// This fails!

ตรวจสอบโพสต์นี้


28
วิธีนี้จะปิดการใช้งานกฎ eslint ทั้งหมดภายในบล็อกนั้นไม่ใช่เพียงกฎที่no-use-before-defineตั้งใจจะเพิกเฉย
Jeremy

13
โดยทั่วไปนั่นคือความคิดทั้งหมด คำถามคือ "เป็นไปได้ไหมที่จะปิดกฏ eslint สำหรับไฟล์ทั้งหมด ?"
Wahome

27
@Wahome "เป็นไปได้ไหมที่จะปิดก eslint สำหรับไฟล์ทั้งหมด?" กฎคำเป็นเอกพจน์ คำตอบของคุณจะปิดกฎทั้งหมดเป็นพหูพจน์
spencer.sm

8
ในคำอธิบายเขากล่าวว่าเขาต้องการสิ่งต่าง ๆ เช่นการปิดการใช้งานกฎเฉพาะ - อ่านคำถามอีกครั้ง!
Marwen Trabelsi

5
เป็นความจริงไม่ได้ตอบคำถามทั้งหมด แต่ยังคงเป็นคำตอบที่มีประโยชน์เนื่องจากเธรดนี้เป็นผลลัพธ์อันดับต้นเมื่อ googling "eslint ละเว้นไฟล์"
Robin Métral

143

คุณสามารถบอก ESLint ให้ละเว้นไฟล์และไดเรกทอรีเฉพาะโดยสร้าง.eslintignoreไฟล์ในไดเรกทอรีรากของโครงการ:

.eslintignore

build/*.js
config/*.js
bower_components/foo/*.js

รูปแบบการเพิกเฉยทำงานตาม.gitignoreข้อกำหนด (อย่าลืมรีสตาร์ทโปรแกรมแก้ไขของคุณ)


10
เป็นไปได้ไหมที่จะเพิกเฉยกฎเฉพาะในไฟล์นี้?
J. Hesters

ฉันต้องการ upvote แต่คำตอบของฉันด้านล่างมีคะแนนน้อยกว่า: D
OZZIE

2
ดีมาก! คุณยังสามารถเพิ่มไฟล์ในไดเรกทอรีไดเรกทอรีย่อยไดเรกทอรีย่อยด้วยวิธีแบบเรียกซ้ำโดยใช้ ** ตัวอย่างเช่นspec/javascripts/**/*.js.
Victor

สมบูรณ์แบบ - สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับไฟล์ที่สร้างขึ้นอัตโนมัติและเปลี่ยนแปลงบ่อยครั้ง (เช่น aws-exports.js หากคุณใช้ Amplify หรือ MobileHub ของ AWS)
bogan27

สิ่งนี้ยังคงให้คำเตือน
dan-klasson

117

คุณยังสามารถปิด / เปิดใช้งานกฎเช่นนี้:

/* eslint-disable no-use-before-define */
... code that violates rule ...
/* eslint-enable no-use-before-define */

คล้ายกับeslint-disable-lineที่กล่าวไว้ในคำถาม อาจเป็นวิธีที่ดีกว่าถ้าคุณไม่ต้องการเรียกคืนการกำหนดค่ากฎที่ซับซ้อนเมื่อเปิดใช้งานอีกครั้ง


ฉันชอบอันนี้เพราะจะเรียกคืนระดับ (เตือนความผิดพลาด) ที่ฉันได้กำหนดไว้ในการกำหนดค่า eslint ของฉัน
Jankapunkt

นี่คือทางออกที่ได้ผลสำหรับฉัน การปิดและเปิดกฎไม่ทำงาน
JoshJoe

65

ขึ้นอยู่กับจำนวนของกฎที่คุณต้องการละเว้น (ทั้งหมดหรือบางส่วน) และขอบเขตของการปิดการใช้งาน (บรรทัด (s), ไฟล์ (s), ทุกที่) เรามี 2 × 3 = 6 ราย


1) ปิดการใช้งาน "กฎทั้งหมด"

กรณีที่ 1.1: คุณต้องการปิดการใช้งาน "กฎทั้งหมด" สำหรับ "หนึ่งบรรทัดขึ้นไป"

Put `/* eslint-disable-line */` at the **end of the line(s)**, 
or `/* eslint-disable-next-line */` right **before the line**.

กรณีที่ 1.2: คุณต้องการปิดการใช้งาน "กฎทั้งหมด" สำหรับ "ไฟล์เดียว"

Put the comment of `/* eslint-disable */` at the top of the file.

กรณีที่ 1.3: คุณต้องการปิดการใช้งาน "กฎทั้งหมด" สำหรับ "ไฟล์บางไฟล์"

มี 3 วิธีที่คุณสามารถทำได้:

  1. คุณสามารถไปกับ 1.2 และเพิ่ม/* eslint-disable */ที่ด้านบนของไฟล์หนึ่งโดยหนึ่ง
  2. คุณสามารถใส่ชื่อไฟล์ (s) .eslintignoreใน วิธีนี้ใช้ได้ดีโดยเฉพาะหากคุณมีเส้นทางที่คุณต้องการเพิกเฉย (เช่นapidoc/** )
  3. หรือถ้าคุณไม่ต้องการที่จะมีการแยก.eslintignoreไฟล์ที่คุณสามารถเพิ่ม "eslintIgnore": ["file1.js", "file2.js"]ในpackage.jsonตามคำสั่งที่นี่

2) การปิดการใช้งาน "กฎบางอย่าง"

กรณีที่ 2.1: คุณต้องการปิดการใช้งาน "กฎบางอย่าง" สำหรับ "หนึ่งบรรทัดขึ้นไป"

You can put `/* eslint-disable-line quotes */` (replace `quotes` with your rules) at the end of the line(s), 
or `/* eslint-disable-next-line no-alert, quotes, semi */` before the line.

กรณีที่ 2.2: คุณต้องการปิดการใช้งาน "กฎบางอย่าง" สำหรับ "หนึ่งไฟล์"

Put the `/* eslint-disable no-use-before-define */` comment at the top of the file.  

ตัวอย่างเพิ่มเติมที่นี่ที่นี่

## กรณี 2.3: คุณต้องการปิดการใช้งาน "กฎบางอย่าง" สำหรับ "ไฟล์บางไฟล์"

สิ่งนี้ตรงไปตรงมาน้อยกว่า คุณควรใส่ไว้ใน"excludedFiles"วัตถุของ"overrides"ส่วนที่คุณ.eslintrcตามคำสั่งที่นี่


4
PS กรณีที่ 5: คุณต้องการปิดใช้งาน "กฎทั้งหมด" สำหรับ "ไฟล์ทั้งหมด" - npm uninstall eslint! : p
Aidin

2
นอกจากนี้โปรดทราบว่าคุณสามารถใช้/* */ความคิดเห็นสไตล์eslint-disableเท่านั้น // eslint-disable no-use-before-defineจะไม่ทำงาน มันใช้งานได้// eslint-disable-next-lineแม้ว่า
Aidin

56

การเพิ่ม "แทนที่" ในไฟล์กำหนดค่า. eslintrc.js ของคุณจะดีกว่า ตัวอย่างเช่นหากคุณไม่ต้องการปิดใช้งานกฎ camelcase สำหรับไฟล์ js ทั้งหมดที่ลงท้ายด้วย Actions ให้เพิ่มโค้ดนี้หลังจากขอบเขตของกฎใน. eslintrc.js

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]

มันไม่ได้ตอบคำถามของ OP เกี่ยวกับไฟล์เฉพาะ
wscourge

ทางเลือกที่ดีในการทำมันในไฟล์
Josef Engelfrost

8
คำตอบที่ไม่ค่อยเข้าใจมากนัก!
อดัม

ใช้งานได้ดี! IMHO นี่ควรเป็นคำตอบที่ยอมรับได้ วิธีนี้ยังคงอยู่ในไฟล์ eslintrc (ทำให้ไฟล์ต้นฉบับสะอาด) และสามารถแทนที่พฤติกรรมของกฎเฉพาะสำหรับไฟล์เฉพาะ +1
akagixxer

48

หากต้องการปิดใช้งานคำเตือนกฎชั่วคราวในไฟล์ของคุณให้ใช้ความคิดเห็นบล็อกในรูปแบบต่อไปนี้:

/* eslint-disable */

สิ่งนี้จะปิดใช้งาน ESLint จนกระทั่ง

/* eslint-enable */

ถึงความคิดเห็นแล้ว

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับหัวข้อนี้ที่นี่


36

คำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน (อาจเป็น eslint รุ่นอื่น ... ฉันใช้eslint v3.19.0) แต่หาวิธีแก้ปัญหาต่อไปนี้ ...

วางต่อไปนี้ที่ด้านบนของไฟล์ของคุณ

/* eslint-disable no-use-before-define */

นี่จะปิดการใช้งานกฎสำหรับไฟล์ทั้งหมด


7
... หรือหลายอย่างเช่น/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke

1
เหมือนกันคำตอบที่ยอมรับไม่ได้ผลสำหรับฉัน สองความแตกต่าง: เปลี่ยนeslintไปและวางeslint-disable : 0ใช้ eslint@4.19.1
hellatan

10
/*eslint-disable */

//suppress all warnings between comments
alert('foo');

/*eslint-enable */

มันใช้งานได้สำหรับฉัน


4
วิธีนี้จะปิดการใช้งานกฎ eslint ทั้งหมดภายในบล็อกนั้นไม่ใช่เพียงกฎที่no-use-before-defineตั้งใจจะเพิกเฉย
Jeremy

สิ่งนี้ช่วยฉันขอบคุณ! ลองพิจารณาคำตอบนี้ด้วยการปิดการใช้งานกฎทั้งหมดรวมทั้งปิดการใช้งานกฎที่ตั้งใจไว้ด้วย
Fabiano Soriani


1

คุณสามารถปิดกฎเฉพาะสำหรับไฟล์โดยใช้ /*eslint [<rule: "off"], >]*/

/* eslint no-console: "off", no-mixed-operators: "off" */

เวอร์ชัน: eslint@4.3.0


สิ่งนี้ทำงานได้อย่างสมบูรณ์ในกรณีที่จำเป็นต้องปิดการใช้งานกฎเดียวสำหรับไฟล์ที่สมบูรณ์หนึ่งไฟล์เท่านั้น
Umakant Patil

0

คุณสามารถกำหนดค่าคุณสมบัติ eslint overrides เพื่อปิดกฏเฉพาะในไฟล์ที่ตรงกับรูปแบบ glob เช่นด้านล่าง

ที่นี่ฉันต้องการปิดno-duplicate-stringกฎเพื่อทดสอบไฟล์ทั้งหมด

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.