visual studio code - Como você resolve regras de linting conflitantes no VSCode entre eslint e typescript-eslint
Eu tenho minhas regras de eslinting da seguinte forma
module.exports = {
env: {
es6: true,
node: true,
mocha: true
},
extends: [
"standard-with-typescript"
],
parser: '@typescript-eslint/parser',
globals: {
Atomics: 'readonly',
SharedArrayBuffer: 'readonly'
},
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
project: "./tsconfig.json"
},
rules: {
"quotes": ["warn", "single"],
"indent": ["warn", "tab", { "ignoreComments": true }],
"no-tabs": 0,
"padded-blocks": 0,
"semi": 0,
"no-trailing-spaces": 0,
"spaced-comment": 0,
"no-multiple-empty-lines": 0,
"space-before-function-paren": 0,
"camelcase": 0,
"prefer-const": "warn",
"space-infix-ops": "warn",
"@typescript-eslint/strict-boolean-expressions": ["warn", {"allowNullable": true}]
},
plugins: [
'@typescript-eslint',
],
}
Quando eu abro um novo arquivo que não está propriamente formatado para tabulações, eu recebo:
Justo, então mudei a indentação para tabs usando o VScode e agora recebo:
???
Eu configurei minhas definições para que todas as extensões leiam apenas de um arquivo eslintrc na raiz do projeto...
Resposta #1
Como você não postou toda a sua configuração .eslintrc.js, só posso supor que você tenha extends para alguns dos conjuntos de regras recomendados, o que leva ao comportamento indesejado de várias regras estarem sendo executadas...
Dependendo de qual dessas duas regras você quiser, você pode simplesmente desativar a outra adicionando isto às suas regras, por exemplo:
"@typescript-eslint/indent": "desligado"
Isso irá desativar a regra @typescript-eslint/indent para o seu projeto.
Resposta #2
Minha solução preferida foi desativar a regra base indent e configurar uma regra substituta @typescript-eslint/indent conforme sugerido aqui: https://github.com/typescript-eslint/typescript-eslint/blob/87b7dbbc8d25d059e34888ec28026bfb4ade2215/packages/eslint-plugin/docs/rules/indent.md
"rules": {
"indent": "off",
"@typescript-eslint/indent": ["error", 2]
}
Descobri que desativar a regra @typescript-eslint/indent em favor da regra base indent simplesmente escondia os erros no editor de código, enquanto ainda fazia a compilação falhar!

