Desativando a regra eslint para um arquivo específico

404

É possível desativar a regra eslint para o arquivo inteiro? Algo como:

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

(Análogo a eslint-disable-line.) Ocorre-me com bastante frequência que, em um determinado arquivo, estou quebrando uma regra específica em muitos locais que são considerados OK para esse arquivo, mas não quero desativar o regra para todo o projeto nem quero desativar outras regras para esse arquivo específico.

Tomas Kulich
fonte
11
Você pode adicionar uma regra como a primeira linha do arquivo da seguinte maneira: / * eslint no-use-before-define: 2 * /
joaumg
2
perfeito, isso funciona, obrigado. Eu só tinha vista para a seção na documentação: eslint.org/docs/user-guide/configuring.html#configuring-rules
Tomas Kulich

Respostas:

404

Você pode desativar / alterar uma regra específica para um arquivo colocando as configurações na parte superior do arquivo.

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

or

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

Mais informações

Gyandeep
fonte
8
Existe uma maneira de colocar uma regra .eslintrcque imponha todas as regras específicas desse arquivo na parte superior do arquivo?
19416 Jeremy
9
@ Jeremy veja minha resposta. Você só precisa adicionar um .eslintignorearquivo ao diretório raiz do projeto.
prograhammer
Como cerca de um html ou um arquivo EJS, que não parece trabalho .eslintignoree /* eslint no-use-before-define: 0 */ // --> OFFquer?
30517 Jeet
É possível executar vários ignores em uma linha?
Cheshireoctopus
4
Tentei / * eslint-disable rule-name * / e funcionou
Marcos Pereira
304

Para desativar uma regra específica para o arquivo:

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

Observe que há um erro no eslint, em que o comentário de linha única não funciona -

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

Verifique este post

Wahome
fonte
28
Isso irá desativar todas as regras eslint dentro desse bloco, não apenas aquele no-use-before-definedestinado a ignorar
Jeremy
13
Basicamente, essa é a ideia toda. A pergunta é: "Será que é possível desligar a regra eslint para o todo arquivo ?"
Wahome
27
@ Wahome "É possível desativar a regra de exclusão para todo o arquivo?" A palavra regra é singular . Sua resposta desativa todas as regras do plural.
Spencer.sm
8
na descrição, ele mencionou que deseja algo como desabilitar regras específicas - leia novamente a pergunta!
Marwen Trabelsi
5
É verdade, isso não aborda a questão toda, mas ainda é uma resposta útil, pois esse tópico é o principal resultado ao pesquisar "eslint ignore file" #
Robin Métral 26/10/19
143

Você pode dizer ao ESLint para ignorar arquivos e diretórios específicos criando um .eslintignorearquivo no diretório raiz do seu projeto:

.eslintignore

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

Os padrões de ignorar se comportam de acordo com a .gitignoreespecificação. (Não esqueça de reiniciar seu editor.)

programador
fonte
10
É possível ignorar apenas regras específicas nesse arquivo?
J. Hesters
Gostaria de votar, mas minha resposta abaixo tem menos pontos: D
OZZIE
2
Muito agradável! Você também pode adicionar arquivos em diretórios, subdiretórios, subsubdiretórios de maneira recursiva usando **. Por exemplo: spec/javascripts/**/*.js.
Victor
Perfect - Isso é particularmente útil para arquivos que são gerados automaticamente e alterados com freqüência (como AWS-exports.js se você estiver usando Amplify da AWS ou MobileHub)
bogan27
Isso ainda dá um aviso
dan-klasson 02/04
117

Você também pode desativar / ativar uma regra como esta:

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

Semelhante ao eslint-disable-linemencionado na pergunta. Pode ser um método melhor se você não precisar restaurar uma configuração de regra complicada ao reativá-la.

eppsilon
fonte
Eu prefiro este, porque restaura o nível (aviso, erro) que eu defini na minha configuração de eslint.
Jankapunkt
Esta é a solução que funcionou para mim. Ligar e desligar a regra não funcionou.
JoshJoe
65

Com base no número de regras que você deseja ignorar (Todas ou Algumas) e no escopo de desativá-las (Linha (s), Arquivo (s), Em Todo Lugar), temos 2 × 3 = 6 casos.


1) Desativando "Todas as regras"

Caso 1.1: você deseja desativar "Todas as regras" para "Uma ou mais linhas"

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

Caso 1.2: você deseja desativar "Todas as regras" para "Um arquivo"

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

Caso 1.3: você deseja desativar "Todas as regras" para "Alguns arquivos"

Existem três maneiras de fazer isso:

  1. Você pode ir com o 1.2 e adicionar /* eslint-disable */sobre os arquivos, um por um.
  2. Você pode colocar o (s) nome (s) do arquivo .eslintignore. Isso funciona bem, especialmente se você tiver um caminho que deseja ser ignorado. (por exemplo apidoc/**)
  3. Como alternativa, se você não quiser ter um .eslintignorearquivo separado , poderá adicioná "eslintIgnore": ["file1.js", "file2.js"]-lo package.jsonconforme as instruções aqui .

2) Desativando "algumas regras"

Caso 2.1: você deseja desabilitar "algumas regras" para "uma ou mais linhas"

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.

Caso 2.2: você deseja desabilitar "algumas regras" para "um arquivo"

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

Mais exemplos aqui .

Caso 2.3: Você deseja desabilitar "algumas regras" para "alguns arquivos"

Isso é menos direto. Você deve colocá-los no "excludedFiles"objeto de "overrides"seção do seu, .eslintrcconforme as instruções aqui .

Auxílio em
fonte
4
PS. Caso 5: Você deseja desativar "Todas as regras" para "Todos os arquivos" - npm uninstall eslint! : p
Aidin
2
Observe também que você pode usar apenas /* */comentários de estilo para eslint-disable. // eslint-disable no-use-before-definenão vai funcionar. Funciona para // eslint-disable-next-lineembora.
Aidin
56

É melhor adicionar "substituições" no seu arquivo de configuração .eslintrc.js. Por exemplo, se você não desabilitar a regra camelcase para todos os arquivos js que terminam em Actions, adicione esse código após o escopo das regras em .eslintrc.js.

"rules": {    
...........    
},
"overrides": [
 {
  "files": ["*Actions.js"],
     "rules": {
        "camelcase": "off"   
     }
 }
]
Andriy
fonte
Ele não responde à pergunta do OP sobre um arquivo específico.
wscourge
Ótima alternativa para fazê-lo em arquivo.
Josef Engelfrost
8
Resposta extremamente subestimada!
Adam
Funciona bem! IMHO esta deve ser a resposta aceita. Dessa maneira, permanece no arquivo eslintrc (mantém os arquivos de origem limpos) e pode substituir o comportamento de regras específicas para arquivos específicos. +1
akagixxer 23/01
48

Para desativar temporariamente os avisos de regras no seu arquivo, use os comentários de bloco no seguinte formato:

/* eslint-disable */

Isso desativará o ESLint até que o

/* eslint-enable */

comentário é alcançado.

Você pode ler mais sobre este tópico aqui .

samuel luswata
fonte
36

A resposta aceita não funcionou para mim (talvez uma versão diferente do eslint ...? Estou usando eslint v3.19.0), mas encontrou uma solução com o seguinte ...

Coloque o seguinte na parte superior do seu arquivo

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

Isso desativará a regra para o arquivo inteiro

sfletche
fonte
7
... ou múltiplo, como #/* eslint-disable no-unused-vars, no-console, import/no-extraneous-dependencies, spaced-comment */
Frank Nocke 29/09
11
a mesma resposta aceita não funcionou para mim. Duas diferenças: mudar eslintpara eslint-disablee largar : 0. Usando [email protected].
hellatan
10
/*eslint-disable */

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

/*eslint-enable */

funcionou para mim

Shakil
fonte
4
Isso irá desativar todas as regras eslint dentro desse bloco, não apenas aquele no-use-before-definedestinado a ignorar
Jeremy
Isso me ajudou, obrigado! Considere também esta resposta à pergunta, desativando todas as regras também desativar a regra destina
Fabiano Soriani
7

Você pode simplesmente colocar isso, por exemplo, na parte superior do arquivo:

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

Você pode desativar uma regra específica para um arquivo usando /*eslint [<rule: "off"], >]*/

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

Versão: [email protected]

Mahesh
fonte
Isso funcionou perfeitamente bem no caso de ser necessário desativar uma regra apenas para um arquivo completo.
Umakant Patil 19/03
0

você pode configurar a propriedade eslint overrides para desativar regras específicas em arquivos que correspondam ao padrão global como abaixo.

Aqui, quero desativar a no-duplicate-stringregra para testar todos os arquivos.

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