Mojtaba Pourkhanlar
About meProjectsBlog

  • 👤About me
  • 🧰Projects
  • ✍️Blog

ESLint چیست؟

خب ESLint یک ابزار Linting برای JavaScript است که کد شما را قبل از اجرا بررسی می‌کند و خطاهای احتمالی، باگ‌های رایج و الگوهای نامناسب را شناسایی می‌کند.

اما تفاوت با Prettier:

  • Prettier : ظاهر کد را فرمت می‌کند.
  • ESLint : کیفیت، درستی و استاندارد بودن کد را بررسی می‌کند.

چرا ESLint مهم است؟


1. کاهش باگ‌ها

خیلی از خطاها قبل از اجرای برنامه شناسایی می‌شوند.

2. بهبود کیفیت کد

کد خواناتر، استانداردتر و قابل نگهداری‌تر می‌شود.

3. پشتیبانی ویژه از React

با پلاگین‌های مخصوص React می‌تواند:

  • قوانین Hooks را بررسی کند
  • مشکلات JSX را تشخیص دهد
  • نکات مربوط به دسترس‌پذیری (a11y) را بررسی کند

نصب ESLint در پروژه React


نصب پایه (React + JavaScript)

npm install -D eslint @eslint/js globals eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-jsx-a11y eslint-plugin-import

اگر از TypeScript استفاده می‌کنید

npm install -D typescript-eslint

ساخت فایل کانفیگ (روش جدید - Flat Config)


در روت پروژه فایل زیر را بسازید:

  eslint.config.js

و داخل آن این تنظیمات را قرار دهید:

import js from "@eslint/js";
import globals from "globals";
import react from "eslint-plugin-react";
import reactHooks from "eslint-plugin-react-hooks";
import jsxA11y from "eslint-plugin-jsx-a11y";
import importPlugin from "eslint-plugin-import";

export default [
  { ignores: ["dist/**", "build/**", "node_modules/**"]
 },

  {
    files: ["**/*.{js,jsx}"]
,
    languageOptions: {
      ecmaVersion: "latest",
      sourceType: "module",
      globals: {
        ...globals.browser,
        ...globals.es2021,
      },
      parserOptions: {
        ecmaFeatures: { jsx: true },
      },
    },
    plugins: {
      react,
      "react-hooks": reactHooks,
      "jsx-a11y": jsxA11y,
      import: importPlugin,
    },
    settings: {
      react: { version: "detect" },
    },
    rules: {
      ...js.configs.recommended.rules,

      // React
      "react/react-in-jsx-scope": "off",
      "react/jsx-uses-react": "off",

      // Hooks
      "react-hooks/rules-of-hooks": "error",
      "react-hooks/exhaustive-deps": "warn",

      // کیفیت عمومی
      "no-unused-vars": ["warn", { argsIgnorePattern: "^_" }]
,
      "no-undef": "error",

      // import
      "import/no-duplicates": "error",
    },
  },
];

اجرای ESLint


اجرای بررسی

npx eslint .

اجرای Auto Fix

npx eslint . --fix

اضافه کردن Script به package.json


{
  "scripts": {
    "lint": "eslint .",
    "lint:fix": "eslint . --fix"
  }
}

استفاده از ESLint کنار Prettier


برای جلوگیری از تداخل قوانین فرمت، این پکیج را نصب کنید:

npm install -D eslint-config-prettier

این کار باعث می‌شود قوانین مربوط به فرمت در ESLint غیرفعال شوند و Prettier فقط مسئول فرمت باشد.

پلاگین‌های پیشنهادی برای React


  • eslint-plugin-react
  • eslint-plugin-react-hooks (بسیار مهم)
  • eslint-plugin-jsx-a11y (برای دسترس‌پذیری)
  • eslint-plugin-import (برای مدیریت importها)

جمع‌بندی

استفاده از ESLint باعث می‌شود:

  • باگ‌های احتمالی زودتر شناسایی شوند
  • کیفیت کد بالا برود
  • استاندارد تیمی حفظ شود
  • قوانین React و Hooks رعایت شوند