Mematikan aturan eslint untuk file tertentu

404

Apakah mungkin untuk mematikan aturan eslint untuk seluruh file? Sesuatu seperti:

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

(Analog dengan eslint-disable-line.) Cukup sering terjadi pada saya, bahwa dalam file tertentu, saya melanggar aturan tertentu di banyak tempat yang dianggap OK untuk file itu, tetapi saya tidak ingin menonaktifkan aturan untuk seluruh proyek juga tidak ingin menonaktifkan aturan lain untuk file tertentu.

Tomas Kulich
sumber
1
Anda dapat menambahkan aturan sebagai baris pertama file sebagai berikut: / * eslint no-use-before-define: 2 * /
joaumg
2
sempurna, itu berhasil, terima kasih. Saya baru saja mengabaikan bagian dalam dokumen: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Jawaban:

404

Anda dapat mematikan / mengubah aturan tertentu untuk file dengan meletakkan konfigurasi di bagian atas file.

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

or

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

Info lebih lanjut

Gyandeep
sumber
8
Apakah ada cara untuk meletakkan aturan .eslintrcyang memberlakukan semua aturan spesifik file seperti ini di bagian atas file?
Jeremy
9
@ Jeremy lihat jawaban saya. Anda hanya perlu menambahkan .eslintignorefile ke direktori root proyek Anda.
Pemrogram
Bagaimana dengan file html atau ejs, yang sepertinya tidak berfungsi .eslintignoredan /* eslint no-use-before-define: 0 */ // --> OFFbaik?
Jeet
Apakah mungkin melakukan beberapa pengabaian pada satu baris?
cheshireoctopus
4
Saya mencoba / * eslint-disable-nama aturan * / dan berhasil
Marcos Pereira
304

Untuk menonaktifkan aturan tertentu untuk file:

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

Perhatikan ada bug di eslint di mana komentar satu baris tidak akan berfungsi -

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

Periksa pos ini

Wahome
sumber
28
Ini akan menonaktifkan semua aturan eslint di dalam blok itu, bukan hanya yang no-use-before-definedimaksudkan untuk diabaikan
Jeremy
13
Pada dasarnya itulah keseluruhan ide. Pertanyaannya adalah "Apakah mungkin untuk mematikan aturan eslint untuk seluruh file ?"
Wahome
27
@Wahome "Apakah mungkin untuk mematikan aturan eslint untuk seluruh file?" Aturan kata adalah tunggal . Jawaban Anda mematikan semua aturan jamak.
spencer.sm
8
dalam uraian yang dia sebutkan bahwa dia menginginkan sesuatu seperti menonaktifkan aturan khusus- baca lagi pertanyaannya!
Marwen Trabelsi
5
Memang benar, ini tidak menjawab seluruh pertanyaan, tetapi masih merupakan jawaban yang bermanfaat karena utas ini adalah hasil teratas ketika googling "eslint ign file"
Robin Métral
143

Anda dapat memberitahu ESLint untuk mengabaikan file dan direktori tertentu dengan membuat .eslintignorefile di direktori root proyek Anda:

.eslintignore

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

Pola abaikan berperilaku sesuai dengan .gitignorespesifikasi. (Jangan lupa untuk me-restart editor Anda.)

prograhammer
sumber
10
Apakah mungkin untuk mengabaikan hanya aturan khusus dalam file ini?
J. Hesters
Saya akan menang tetapi jawaban saya di bawah ini memiliki skor lebih rendah: D
OZZIE
2
Sangat bagus! Anda juga dapat menambahkan file dalam direktori, subdirektori, subdirektori dengan cara rekursif menggunakan **. Sebagai contoh: spec/javascripts/**/*.js.
Victor
Sempurna - Ini sangat berguna untuk file yang dibuat secara otomatis dan sering diubah (seperti aws-exports.js jika Anda menggunakan AWS's Amplify atau MobileHub)
bogan27
Ini masih memberi peringatan
dan-klasson
117

Anda juga dapat menonaktifkan / mengaktifkan aturan seperti ini:

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

Mirip dengan yang eslint-disable-linedisebutkan dalam pertanyaan. Ini mungkin metode yang lebih baik jika Anda tidak ingin mengembalikan konfigurasi aturan yang rumit saat mengaktifkannya kembali.

eppsilon
sumber
Saya lebih suka yang ini, karena mengembalikan level (memperingatkan, kesalahan) yang telah saya definisikan di konfigurasi eslint saya.
Jankapunkt
Ini adalah solusi yang berhasil untuk saya. Mematikan dan menghidupkan aturan tidak berhasil.
JoshJoe
65

Berdasarkan jumlah aturan yang ingin Anda abaikan (Semua, atau Beberapa), dan ruang lingkup menonaktifkannya (Baris, File, Di mana-mana), kami memiliki 2 × 3 = 6 kasus.


1) Menonaktifkan "Semua aturan"

Kasus 1.1: Anda ingin menonaktifkan "Semua Aturan" untuk "Satu atau lebih Baris"

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

Kasus 1.2: Anda ingin menonaktifkan "Semua Aturan" untuk "Satu File"

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

Kasus 1.3: Anda ingin menonaktifkan "Semua aturan" untuk "Beberapa File"

Ada 3 cara Anda bisa melakukan ini:

  1. Anda dapat menggunakan 1.2 dan menambahkan /* eslint-disable */di atas file, satu per satu.
  2. Anda dapat memasukkan nama file .eslintignore. Ini berfungsi baik terutama jika Anda memiliki jalan yang ingin Anda abaikan. (mis. apidoc/**)
  3. Atau, jika Anda tidak ingin memiliki terpisah .eslintignorefile, Anda dapat menambahkan "eslintIgnore": ["file1.js", "file2.js"]di package.jsonseperti yang diperintahkan di sini .

2) Menonaktifkan "Beberapa Aturan"

Kasus 2.1: Anda ingin menonaktifkan "Beberapa Aturan" untuk "Satu atau lebih Baris"

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.

Kasus 2.2: Anda ingin menonaktifkan "Beberapa Aturan" untuk "Satu File"

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

Lebih banyak contoh di sini .

## Kasus 2.3: Anda ingin menonaktifkan "Beberapa Aturan" untuk "Beberapa file"

Ini kurang lurus ke depan. Anda harus meletakkannya di "excludedFiles"objek "overrides"bagian Anda .eslintrcseperti yang diperintahkan di sini .

Aidin
sumber
4
PS. Kasus 5: Anda ingin menonaktifkan "Semua aturan" untuk "Semua File" - npm uninstall eslint! : p
Aidin
2
Perhatikan juga bahwa Anda hanya dapat menggunakan /* */komentar gaya untuk eslint-disable. // eslint-disable no-use-before-definetidak akan berhasil. Ini bekerja untuk // eslint-disable-next-line.
Aidin
56

Lebih baik menambahkan "menimpa" di file konfigurasi .eslintrc.js Anda. Sebagai contoh jika Anda tidak ingin menonaktifkan aturan camelcase untuk semua file js yang berakhir dengan Tindakan tambahkan kode ini setelah lingkup aturan di .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Andriy
sumber
Itu tidak menjawab pertanyaan OP tentang file tertentu.
wscourge
Alternatif yang bagus untuk melakukannya dalam file.
Josef Engelfrost
8
Jawaban yang sangat kurang dihargai!
Adam
Bagus sekali! IMHO ini harus menjadi jawaban yang diterima. Cara ini tetap dalam file eslintrc (menjaga file sumber tetap bersih) dan dapat mengabaikan perilaku aturan khusus untuk file tertentu. +1
akagixxer
48

Untuk menonaktifkan sementara peringatan aturan dalam file Anda, gunakan blokir komentar dalam format berikut:

/* eslint-disable */

Ini akan menonaktifkan ESLint hingga

/* eslint-enable */

komentar tercapai.

Anda dapat membaca lebih lanjut tentang topik ini di sini .

samuel luswata
sumber
36

Jawaban yang diterima tidak berfungsi untuk saya (mungkin versi eslint yang berbeda ...? Saya menggunakan eslint v3.19.0), tetapi menemukan solusi dengan yang berikut ...

Tempatkan yang berikut di atas file Anda

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

Ini akan menonaktifkan aturan untuk seluruh file

sfletche
sumber
7
... atau banyak, seperti/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke
1
sama sama, jawaban yang diterima tidak berhasil untuk saya. Dua perbedaan: mengubah eslintke eslint-disabledan menjatuhkan : 0. Menggunakan [email protected].
hellatan
10
/*eslint-disable */

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

/*eslint-enable */

itu berhasil untuk saya

Shakil
sumber
4
Ini akan menonaktifkan semua aturan eslint di dalam blok itu, bukan hanya yang no-use-before-definedimaksudkan untuk diabaikan
Jeremy
Ini membantu saya, terima kasih! Pertimbangkan juga jawaban pertanyaan ini, menonaktifkan semua aturan juga menonaktifkan aturan yang dimaksud
Fabiano Soriani
7

Anda bisa meletakkan ini sebagai contoh di bagian atas file:

/* eslint-disable no-console */
OZZIE
sumber
1

Anda dapat mematikan aturan tertentu untuk file dengan menggunakan /*eslint [<rule: "off"], >]*/

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

Versi: kapan: [email protected]

Mahesh
sumber
Ini berfungsi dengan baik jika seseorang perlu menonaktifkan satu aturan hanya untuk satu file lengkap.
Umakant Patil
0

Anda dapat mengkonfigurasi properti override eslint untuk mematikan aturan khusus pada file yang cocok dengan pola glob seperti di bawah ini.

Di sini, saya ingin mematikan no-duplicate-stringaturan untuk menguji semua file.

overrides: [
  {
    files: ["**/__tests__/**/*.[jt]s?(x)", "**/?(*.)+(spec|test).[jt]s?(x)"],
    rules: {
      'sonarjs/no-duplicate-string': 'off'
    }
  }
]
Sagar Gavhane
sumber