@romaro

Можно ли ускорить работу ESLint с тайпчекингом?

Я настраиваю линтер с тайпчекингом для монорепозитория. Делаю по этой инструкции. Все работает, но есть ощущение, что подтормаживает. Например, команда проверки тестового файла из одной строки кода занимает секунд 15:
npx eslint ./packages/frontend/Test.ts

Проект не большой (20 файлов, меньше 1500 строк кода на TS). Структура моего репо:
- packages
- - backend
- - - Test.ts
...
- - - tsconfig.json
- - frontend
...
- - - tsconfig.json
- .eslintrc.json
- .eslintignore
- tsconfig.json


Вот мой главный файл .eslintrc:
module.exports = {
    root: true,
    parser: '@typescript-eslint/parser',
    plugins: ['@typescript-eslint'],
    extends: [
        'eslint:recommended',
        'plugin:@typescript-eslint/recommended',
        'plugin:@typescript-eslint/recommended-requiring-type-checking',
        'prettier',
    ],
    parserOptions: {
        tsconfigRootDir: '/home/romaro/react-ssr/packages',
        sourceType: 'module',
        ecmaVersion: 2021,
        project: ['backend/tsconfig.json', 'frontend/tsconfig.json'],
    },
    rules: {
        semi: ['error', 'always'],
        quotes: ['error', 'single'],
    },
};


.eslintignore:
**/node_modules/**
babel.config.js
.eslintrc.cjs


Корневой tsconfig:
{
    "compilerOptions": {
        "rootDir": ".",
        "noUnusedLocals": true,
        "noUnusedParameters": true,
        "allowUnreachableCode": false,
        "allowUnusedLabels": false,
        "exactOptionalPropertyTypes": true,
        "noFallthroughCasesInSwitch": true,
        "noImplicitAny": true,
        "noImplicitOverride": false,
        "noImplicitReturns": true,
        "strict": true,
        "useUnknownInCatchVariables": true,
        "noImplicitThis": true,
        "noPropertyAccessFromIndexSignature": true,
    },
    "references": [
        {
            "path": "./packages/backend"
        },
        {
            "path": "./packages/frontend"
        }
    ],
    "exclude": [
        "node_modules"
    ],
}


Пример проектного конфига:
{
    "extends": "../../tsconfig.json",
    "compilerOptions": {
        "strictPropertyInitialization": false,
        "outDir": "_dist",
        "target": "ESNext",
        "moduleResolution": "Node",
        "allowSyntheticDefaultImports": true,
        "useUnknownInCatchVariables": false,
        "composite": true,
        "declaration": true,
        "declarationMap": true
    },
    "include": [
        "**/*"
    ],
    "exclude": [
        "_dist"
    ]
}


Манифест:
{
  "name": "react-ssr",
  "version": "1.0.0",
  "description": "",
  "type": "module",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Roman R",
  "license": "ISC",
  "dependencies": {
    "fastify": "^4.0.0-rc.3",
    "handlebars": "^4.7.7"
  },
  "devDependencies": {
    "@types/node": "^17.0.36",
    "@typescript-eslint/eslint-plugin": "^5.27.0",
    "@typescript-eslint/parser": "^5.27.0",
    "eslint": "^8.17.0",
    "eslint-config-prettier": "^8.5.0",
    "prettier": "^2.6.2"
  }
}


Есть ощущение, что линтер выполняет какую-то лишнюю работу. Или это нормальное время сборки? Повторюсь, что проект не большой.

Так же замечал, что в некоторых монорепозиториях (на том же nestjs) настройка ведется через overrides. Это как-то влияет на производительность иди дело вкуса?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы