Pesquisa de site

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!