본문 바로가기
프론트엔드/리액트

[React,TS] airbnb eslint prettier적용

by goodchuck 2024. 5. 28.

목차

     React + TS에서 airbnb형식 적용하기

     

     

    설치방법

    npm install --save-dev eslint prettier eslint-config-airbnb eslint-plugin-import eslint-plugin-jsx-a11y eslint-plugin-react eslint-plugin-react-hooks eslint-plugin-prettier eslint-config-prettier eslint-import-resolver-typescript eslint-plugin-import

     

    .eslintrc.json

    {
      "extends": [
        "airbnb",
        "airbnb/hooks",
        "plugin:@typescript-eslint/recommended",
        "plugin:prettier/recommended"
      ],
      "plugins": ["@typescript-eslint", "prettier"],
      "parser": "@typescript-eslint/parser",
      "parserOptions": {
        "ecmaVersion": 2020,
        "sourceType": "module",
        "ecmaFeatures": {
          "jsx": true
        },
        "project": "./tsconfig.json"
      },
      "rules": {
        "prettier/prettier": [
          "error",
          {
            "endOfLine": "auto",
            "singleQuote": true,
            "trailingComma": "all",
            "tabWidth": 2,
            "useTabs": false // 추가: 탭 대신 공백 사용
          }
        ],
    
        "react/react-in-jsx-scope": "off",
        "import/no-extraneous-dependencies": ["error", { "devDependencies": true }],
        "@typescript-eslint/explicit-module-boundary-types": "off",
        "react/jsx-filename-extension": [1, { "extensions": [".tsx", ".jsx"] }],
        "import/extensions": [
          "error",
          "ignorePackages",
          {
            "js": "never",
            "jsx": "never",
            "ts": "never",
            "tsx": "never"
          }
        ]
      },
      "settings": {
        "react": {
          "version": "detect"
        },
        "import/resolver": {
          "node": {
            "extensions": [".js", ".jsx", ".ts", ".tsx"]
          },
          "typescript": {
            "alwaysTryTypes": true,
            "project": "./tsconfig.json"
          }
        }
      }
    }

     

    .prettierrc

    {
     "singleQuote": true,
     "trailingComma": "all",
     "printWidth": 80,
     "tabWidth": 2,
     "semi": true,
     "endOfLine": "auto"
    }

     

    VS Code에서 적용하려면?

    .vscode/settings.json

    {
      "editor.formatOnSave": true,
      "editor.tabSize": 2, // 탭 크기를 2로 설정
      "editor.insertSpaces": true, // 탭 대신 공백 사용
      "editor.detectIndentation": false, // 파일 내용에 따라 자동으로 들여쓰기 감지 비활성화
      "editor.codeActionsOnSave": {
        "source.fixAll.eslint": "explicit"
      },
      "eslint.validate": [
        "javascript",
        "javascriptreact",
        "typescript",
        "typescriptreact"
      ],
      "prettier.requireConfig": true
    }