Я пытаюсь создать проект с нуля с помощью следующих инструментов / конфигураций:
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", которая в моем случае по какой-то причине не работает ...