"@typescript-eslint/eslint-plugin": "^6.0.0",
"@typescript-eslint/parser": "^6.0.0",
"eslint": "^8.33.0",
"eslint-config-prettier": "^8.0.0",
"eslint-import-resolver-typescript": "^3.5.1",
"eslint-plugin-import": "^2.26.0",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-prettier": "^5.0.0",
После чего создать отдельный файл с вот этим вот
module.exports = {
root: true,
parser: "@typescript-eslint/parser",
parserOptions: {
tsconfigRootDir: __dirname,
project: ["./tsconfig.eslint.json"],
ecmaVersion: 2022,
},
plugins: ["@typescript-eslint", "node", "prettier"],
extends: [
"eslint:recommended",
"plugin:@typescript-eslint/recommended",
"plugin:node/recommended",
"plugin:import/recommended",
"plugin:import/typescript",
"plugin:@typescript-eslint/recommended-requiring-type-checking",
"prettier",
],
rules: {
"prettier/prettier": "error",
"@typescript-eslint/consistent-type-assertions": [
"warn",
{
assertionStyle: "angle-bracket",
},
],
"@typescript-eslint/no-explicit-any": "off",
"node/file-extension-in-import": [
"error",
"always",
{ tryExtensions: [".js", ".json", ".node"] },
],
"node/no-missing-import": "off",
"node/no-unpublished-import": ["off"],
"import/no-unresolved": "error",
"import/no-named-as-default": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-member-access": "off",
"@typescript-eslint/no-unsafe-call": "off",
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-unsafe-return": "off",
"@typescript-eslint/unbound-method": "off",
},
settings: {
"import/parsers": {
"@typescript-eslint/parser": [".ts", ".tsx"],
},
"import/resolver": {
typescript: {
alwaysTryTypes: true,
typescript: true,
node: true,
},
},
},
};Кроме того, нужно сделать отдельный tsconfig специально для ESLint. А если у одной из этих библиотек выйдет новая большая версия, то всё вообще перестанет работать, пока другие не добавят совместимость.
В языках типа Elixir или Rust задача форматирования кода решается одной встроенной командой. Dixi.