Правильный способ настройки ESlint и TSlint в смешанном проекте - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь создать проект с нуля с помощью следующих инструментов / конфигураций:

eslint (с плагином airbnb)

tslint (с плагином airbnb)

prettier

все "линтинги" должны работать как с файлами. js, так и с файлами .ts

Расширения VSCode: ESlint, TSlint, Prettier

My .eslintrc.json file :

{
  "env": {
    "browser": true,
    "commonjs": true,
    "es2020": true
  },
  "extends": [
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended",
    "airbnb/base",
    "eslint-config-prettier"
  ],
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "ecmaVersion": 11
  },
  "plugins": ["@typescript-eslint/eslint-plugin", "eslint-plugin-prettier"],
  "rules": {
    "prettier/prettier": "error",
    "no-unused-vars": "warn",
    "@typescript-eslint/no-var-requires": "warn",
    "func-names": "off"
  },
  "overrides": [
    {
      "files": ["*.ts"],
      "excludedFiles": ["*.js"],
      "rules": {
        "@typescript/no-var-requires": "off"
      }
    }
  ]
}

.prettierrc

{
  "singleQuote": true,
  "prettier/prettier": [
    "error",
    {
      "endOfLine": "auto"
    }
  ]
}

index.js

const obj = {
  hello() {
    console.log('Hello!');
  },
};


anotherindex.ts

const obj = {
  hello() {
    console.log('Hello!');
  },
};

Однако я получение следующих ошибок на obj

В JS:

'obj' is assigned a value but never used. eslint(no-unused-vars)

'obj' is assigned a value but never used. eslint(@typescript/no-unused-vars)

В TS:

'obj' is assigned a value but never used. eslint(no-unused-vars)

'obj' is assigned a value but never used. eslint(@typescript/no-unused-vars)

Cannot redeclare block-scoped variable 'obj'.

Желаемый результат:

TSlint должен использоваться только для файлов ts

ESlint предназначен только для js файлов

( важно ) TSlint и ESlint должны следовать одним и тем же правилам

(даже если мне придется дублировать все правила в .eslintrc.json. Пока я не перестаю понимать, как мои правила применяются как для ts, так и для * 1 068 *. Я просто поставил свои правила "правила" и все. Затем попытался поместить их в раздел «Переопределения» ... Думаю, я все испортил)

Я просмотрел пару связанных тем по SO. Но в основном эти проблемы были решены с помощью команды "exclude", которая в моем случае по какой-то причине не работает ...

...