UNPKG

eslint-config-minsug

Version:
103 lines (92 loc) 3.11 kB
import js from "@eslint/js"; import globals from "globals"; import tseslint from "typescript-eslint"; import reactHooks from "eslint-plugin-react-hooks"; import react from "eslint-plugin-react"; import jsxA11y from "eslint-plugin-jsx-a11y"; import importPlugin from "eslint-plugin-import"; import unusedImports from "eslint-plugin-unused-imports"; import simpleImportSort from "eslint-plugin-simple-import-sort"; import prettier from "eslint-plugin-prettier"; import { defineConfig, globalIgnores } from "eslint/config"; const minsugConfig = defineConfig([ globalIgnores(["dist"]), { extends: [ js.configs.recommended, tseslint.configs.recommendedTypeChecked, reactHooks.configs["recommended-latest"], jsxA11y.flatConfigs.recommended, ], languageOptions: { ecmaVersion: 2020, globals: globals.browser, parserOptions: { projectService: true, tsconfigRootDir: import.meta.dirname, }, }, plugins: { react, import: importPlugin, "unused-imports": unusedImports, "simple-import-sort": simpleImportSort, prettier, }, rules: { // ===== React/JSX ===== "react/react-in-jsx-scope": "off", // React 17+ 자동 JSX 트랜스폼 "react/jsx-props-no-spreading": "off", "react/require-default-props": "off", // ===== Hooks ===== // preset에 포함되지만 강하게 enforce "react-hooks/exhaustive-deps": "error", // ===== TS 우선 룰 구성 ===== // 기본 no-unused-vars는 TS 버전으로 대체 "no-unused-vars": "off", "@typescript-eslint/no-unused-vars": [ "error", { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_", ignoreRestSiblings: true, }, ], "@typescript-eslint/consistent-type-imports": [ "error", { fixStyle: "inline-type-imports" }, ], "@typescript-eslint/consistent-type-assertions": [ "error", { assertionStyle: "never" }, ], "@typescript-eslint/switch-exhaustiveness-check": "error", // ===== Import 관리 ===== // unused-imports로 실제 미사용 import 제거/신고 "unused-imports/no-unused-imports": "error", "unused-imports/no-unused-vars": [ "warn", { vars: "all", varsIgnorePattern: "^_", args: "after-used", argsIgnorePattern: "^_", }, ], "import/no-duplicates": ["error", { "prefer-inline": true }], "simple-import-sort/imports": "error", "simple-import-sort/exports": "error", "import/no-extraneous-dependencies": "off", "import/prefer-default-export": "off", "import/extensions": "off", // ===== 기타 팀 컨벤션 ===== "no-console": ["error", { allow: ["warn", "error"] }], // ===== Prettier 연동 ===== // flat-config에서는 plugin 기반으로 직접 켭니다. "prettier/prettier": "error", }, }, ]); export default minsugConfig;