Назад к вопросам
Junior
108
questionbank

Как вы использовали линтер для JavaScript?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Использовал совместно с ESLint и Prettier для автоматического форматирования кода и проверки на стилевые ошибки, потенциальные баги и нарушения паттернов. Конфигурация обычно включала преднастроенные правила, например, airbnb-base или @typescript-eslint. Интегрировался с IDE (VS Code) для моментального фидбэка в процессе написания кода и сборочной системой (Webpack, Vite) при помощи соответствующих плагинов (eslint-webpack-plugin) для выполнения проверок перед сборкой или при коммитах (через lint-staged и husky).

// Пример файла .eslintrc.js
module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    'airbnb-base',
    'plugin:@typescript-eslint/recommended',
    'prettier', // Отключает правила ESLint, конфликтующие с Prettier
  ],
  parser: '@typescript-eslint/parser',
  parserOptions: {
    ecmaVersion: 12,
    sourceType: 'module',
  },
  plugins: [
    '@typescript-eslint',
    'prettier',
  ],
  rules: {
    // Переопределение или добавление своих правил
    'no-console': 'warn', // Предупреждение вместо ошибки для console.log
    'import/no-unresolved': 'off', // Пример отключения правила (может понадобиться для алиасов путей)
    'prettier/prettier': 'error', // Применение правил Prettier как ошибки ESLint
  },
  settings: {
    'import/resolver': {
      node: {
        extensions: ['.js', '.jsx', '.ts', '.tsx'], // Учет расширений для импортов
      },
    },
  },
};

В package.json обычно настраиваются скрипты для удобного запуска:

{
  "scripts": {
    "lint": "eslint './src/**/*.{js,jsx,ts,tsx}'",
    "lint:fix": "eslint './src/**/*.{js,jsx,ts,tsx}' --fix",
    "format": "prettier --check './src/**/*.{js,jsx,ts,tsx,css,scss,md,json}'",
    "format:fix": "prettier --write './src/**/*.{js,jsx,ts,tsx,css,scss,md,json}'"
  },
  "devDependencies": {
    "eslint": "^7.32.0",
    "eslint-config-airbnb-base": "^14.2.1",
    "eslint-config-prettier": "^8.3.0",
    "eslint-plugin-import": "^2.24.2",
    "eslint-plugin-prettier": "^4.0.0",
    "@typescript-eslint/eslint-plugin": "^4.32.0",
    "@typescript-eslint/parser": "^4.32.0",
    "prettier": "^2.4.1",
    "husky": "^7.0.0",
    "lint-staged": "^11.1.2"
  },
  "lint-staged": {
    "./src/**/*.{js,jsx,ts,tsx}": [
      "eslint --fix"
    ],
    "./src/**/*.{js,jsx,ts,tsx,css,scss,md,json}": [
      "prettier --write"
    ]
  }
}