Tắt quy tắc eslint cho một tệp cụ thể


404

Có thể tắt quy tắc eslint cho toàn bộ tập tin không? Một cái gì đó như:

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

(Tương tự như eslint-vô hiệu hóa dòng.) Điều này xảy ra với tôi khá thường xuyên, rằng trong một tệp nhất định, tôi vi phạm một quy tắc cụ thể ở nhiều nơi được coi là OK cho tệp đó, nhưng tôi không muốn vô hiệu hóa quy tắc cho toàn bộ dự án và tôi cũng không muốn vô hiệu hóa các quy tắc khác cho tệp cụ thể đó.


1
Bạn có thể thêm quy tắc làm dòng đầu tiên của tệp như sau: / * eslint no-use-before-định: 2 * /
joaumg

2
hoàn hảo, hoạt động, cảm ơn bạn. Tôi chỉ bỏ qua phần trong các tài liệu: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Câu trả lời:


404

Bạn có thể tắt / thay đổi một quy tắc cụ thể cho một tệp bằng cách đặt các cấu hình ở đầu tệp.

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

or

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

Thêm thông tin


8
Có cách nào để đặt một quy tắc trong .eslintrcđó thực thi tất cả các quy tắc cụ thể của tệp như thế này lên đầu tệp không?
Jeremy

9
@Jeremy xem câu trả lời của tôi. Bạn chỉ cần thêm một .eslintignoretập tin vào thư mục gốc dự án của bạn.
prograhammer

Làm thế nào về một html hoặc một tập tin EJS, điều đó không có vẻ làm việc .eslintignore/* eslint no-use-before-define: 0 */ // --> OFFmột trong hai?
Jeet

Có thể thực hiện nhiều lần bỏ qua trên một dòng?
cheshireoctopus

4
Tôi đã thử / * eslint-vô hiệu hóa tên quy tắc * / và nó đã hoạt động
Marcos Pereira

304

Để vô hiệu hóa một quy tắc cụ thể cho tệp:

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

Lưu ý rằng có một lỗi trong eslint nơi nhận xét dòng đơn sẽ không hoạt động -

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

Kiểm tra bài này


28
Điều này sẽ vô hiệu hóa tất cả các quy tắc eslint trong khối đó, không chỉ là quy tắc no-use-before-definebỏ qua
Jeremy

13
Về cơ bản đó là toàn bộ ý tưởng. Câu hỏi là "Có thể tắt quy tắc eslint cho toàn bộ tệp không?"
Wahome

27
@Wahome "Có thể tắt quy tắc eslint cho toàn bộ tệp không?" Các quy tắc từ là số ít . Câu trả lời của bạn tắt tất cả các quy tắc số nhiều.
spencer.sm

8
trong phần mô tả anh ấy đã đề cập rằng anh ấy muốn mọi thứ như vô hiệu hóa quy tắc cụ thể - đọc lại câu hỏi!
Marwen Trabelsi

5
Đó là sự thật, điều này không giải quyết được toàn bộ câu hỏi, nhưng vẫn là một câu trả lời hữu ích vì chủ đề này là kết quả hàng đầu khi googling "tập tin bỏ qua eslint"
Robin Métral

143

Bạn có thể yêu cầu ESLint bỏ qua các tệp và thư mục cụ thể bằng cách tạo một .eslintignoretệp trong thư mục gốc của dự án của bạn:

.eslintignore

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

Các mẫu bỏ qua hành xử theo .gitignoređặc điểm kỹ thuật. (Đừng quên khởi động lại trình chỉnh sửa của bạn.)


10
Có thể bỏ qua chỉ các quy tắc cụ thể trong tập tin này?
J. Hesters

Tôi sẽ upvote nhưng câu trả lời của tôi dưới đây có ít điểm hơn: D
OZZIE

2
Rất đẹp! Bạn cũng có thể thêm các tệp trong thư mục, thư mục con, thư mục con theo cách đệ quy bằng **. Ví dụ : spec/javascripts/**/*.js.
Victor

Hoàn hảo - Điều này đặc biệt hữu ích cho các tệp được tạo tự động và thay đổi thường xuyên (như aws-export.js nếu bạn đang sử dụng Amplify hoặc MobileHub của AWS)
bogan27

Điều này vẫn đưa ra một cảnh báo
dan-klasson

117

Bạn cũng có thể tắt / bật quy tắc như thế này:

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

Tương tự eslint-disable-linenhư đã đề cập trong câu hỏi. Nó có thể là một phương pháp tốt hơn nếu bạn không muốn khôi phục cấu hình quy tắc phức tạp khi bật lại nó.


Tôi thích cái này hơn, vì nó khôi phục mức (cảnh báo, lỗi) mà tôi đã xác định trong cấu hình eslint của mình.
Jankapunkt

Đây là giải pháp hiệu quả với tôi. Tắt quy tắc và không hoạt động.
JoshJoe

65

Dựa trên số quy tắc bạn muốn bỏ qua (Tất cả hoặc Một số) và phạm vi vô hiệu hóa nó (Dòng (s), Tệp (s), Mọi nơi), chúng tôi có 2 × 3 = 6 trường hợp.


1) Vô hiệu hóa "Tất cả các quy tắc"

Trường hợp 1.1: Bạn muốn tắt "Tất cả quy tắc" cho "Một hoặc nhiều dòng"

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

Trường hợp 1.2: Bạn muốn tắt "Tất cả quy tắc" cho "Một tệp"

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

Trường hợp 1.3: Bạn muốn tắt "Tất cả quy tắc" cho "Một số tệp"

Có 3 cách bạn có thể làm điều này:

  1. Bạn có thể đi với 1,2 và thêm /* eslint-disable */vào đầu các tệp, từng cái một.
  2. Bạn có thể đặt tên tập tin vào .eslintignore. Điều này hoạt động tốt đặc biệt là nếu bạn có một con đường mà bạn muốn bị bỏ qua. (ví dụ apidoc/**)
  3. Ngoài ra, nếu bạn không muốn có một .eslintignoretệp riêng , bạn có thể thêm "eslintIgnore": ["file1.js", "file2.js"]vào package.jsontheo hướng dẫn tại đây .

2) Vô hiệu hóa "Một số quy tắc"

Trường hợp 2.1: Bạn muốn tắt "Một số quy tắc" cho "Một hoặc nhiều dòng"

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.

Trường hợp 2.2: Bạn muốn tắt "Một số quy tắc" cho "Một tệp"

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

Thêm ví dụ ở đây .

## Trường hợp 2.3: Bạn muốn tắt "Một số quy tắc" cho "Một số tệp"

Điều này là ít thẳng thắn. Bạn nên đặt chúng trong "excludedFiles"đối tượng của "overrides"phần của bạn .eslintrcnhư được hướng dẫn ở đây .


4
Tái bút Trường hợp 5: Bạn muốn tắt "Tất cả quy tắc" cho "Tất cả tệp" - npm uninstall eslint! : p
Aidin

2
Cũng lưu ý rằng bạn chỉ có thể sử dụng /* */nhận xét phong cách cho eslint-disable. // eslint-disable no-use-before-definesẽ không làm việc Nó hoạt động cho // eslint-disable-next-linemặc dù.
Aidin

56

Tốt hơn là thêm "ghi đè" trong tệp cấu hình .eslintrc.js của bạn. Ví dụ: nếu bạn không tắt quy tắc camelcase cho tất cả các tệp js kết thúc trên Hành động, hãy thêm mã này sau phạm vi quy tắc trong .eslintrc.js.

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

Nó không trả lời câu hỏi của OP về tập tin cụ thể.
wscourge 15/03/19

Thay thế tuyệt vời để làm điều đó trong tập tin.
Josef Engelfrost

8
Câu trả lời không được đánh giá cao!
Adam

Hoạt động tuyệt vời! IMHO đây sẽ là câu trả lời được chấp nhận. Cách này nằm trong tệp eslintrc (giữ các tệp nguồn sạch) và có thể ghi đè hành vi của các quy tắc cụ thể cho các tệp cụ thể. +1
akagixxer

48

Để tạm thời tắt cảnh báo quy tắc trong tệp của bạn, hãy sử dụng nhận xét chặn theo định dạng sau:

/* eslint-disable */

Điều này sẽ vô hiệu hóa ESLint cho đến khi

/* eslint-enable */

bình luận được đạt tới.

Bạn có thể đọc thêm về chủ đề này ở đây .


36

Câu trả lời được chấp nhận không phù hợp với tôi (có thể là một phiên bản khác của eslint ...? Tôi đang sử dụng eslint v3.19.0 ), nhưng đã tìm ra giải pháp với ...

Đặt phần sau vào đầu tập tin của bạn

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

Điều này sẽ vô hiệu hóa quy tắc cho toàn bộ tập tin


7
... hoặc nhiều, như/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke

1
Tương tự, câu trả lời được chấp nhận đã không làm việc cho tôi. Hai sự khác biệt: thay đổi eslintđể eslint-disablevà thả : 0. Sử dụng eslint@4.19.1.
hellatan

10
/*eslint-disable */

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

/*eslint-enable */

nó làm việc cho tôi


4
Điều này sẽ vô hiệu hóa tất cả các quy tắc eslint trong khối đó, không chỉ là quy tắc no-use-before-definebỏ qua
Jeremy

Điều này đã giúp tôi, cảm ơn! Cũng xem xét câu trả lời này cho câu hỏi, vô hiệu hóa tất cả các quy tắc cũng vô hiệu hóa quy tắc dự định
Fabiano Soriani

7

Bạn chỉ có thể đặt ví dụ này ở đầu tệp:

/* eslint-disable no-console */

1

Bạn có thể tắt quy tắc cụ thể cho một tệp bằng cách sử dụng /*eslint [<rule: "off"], >]*/

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

Phiên bản: eslint@4.3.0


Điều này hoạt động hoàn toàn tốt trong trường hợp người ta chỉ cần vô hiệu hóa một quy tắc cho một tệp hoàn chỉnh.
Umakant Patil

0

bạn có thể định cấu hình eslint ghi đè thuộc tính để tắt các quy tắc cụ thể trên các tệp khớp với mẫu toàn cục như bên dưới.

Ở đây, tôi muốn tắt no-duplicate-stringquy tắc để kiểm tra tất cả các tệp.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.