본문 바로가기

FrontEnd/React

[React] Next.js + Typescript + Redux Toolkit ESLint, prettier 기본설정

반응형

1) vs코드 익스텐션 설치

 

2) lint 패키지 추가 설치

@typescript-eslint/eslint-plugin
@typescript-eslint/parser //추가설치
eslint-plugin-prettier
eslint-plugin-react //추가설치
eslint
eslint-config-next //추가설치
eslint-config-prettier //추가설치
prettier //추가설치

eslint 설정 파일

//.eslintrc.json

{
  "extends": [
    "next",
    "next/core-web-vitals",
    "eslint:recommended",
    "plugin:@typescript-eslint/eslint-recommended",
    "plugin:@typescript-eslint/recommended",
    "plugin:prettier/recommended"
  ],
  "globals": {
    "process": true
  },
  "plugins": ["@typescript-eslint", "prettier"],
  "env": {
    "browser": true,
    "node": true,
    "es6": true
  },
  "parser": "@typescript-eslint/parser",
  "parserOptions": {
    "sourceType": "module"
  },
  "settings": {
    "react": {
      "pragma": "React",
      "version": "detect"
    },
    "import/parsers": {
      "@typescript-eslint/parser": [".ts", ".tsx"]
    }
  },
  "rules": {
    "@next/next/no-img-element": 0,
    "semi": "off",
    "prettier/prettier": ["error", { "singleQuote": true }],
    "react/jsx-no-target-blank": "warn",
    "camelcase": "off",
    "@typescript-eslint/naming-convention": [
      "error",
      {
        "selector": "default",
        "format": ["camelCase"]
      },
      {
        "selector": "class",
        "format": ["PascalCase"]
      },
      {
        "selector": "interface",
        "format": ["PascalCase"]
      },
      {
        "selector": "typeParameter",
        "format": null
      },
      {
        "selector": "typeAlias",
        "format": null
      },
      {
        "selector": "property",
        "format": null
      },
      {
        "selector": "variable",
        "format": null
      },
      {
        "selector": "enum",
        "format": null
      },
      {
        "selector": "enumMember",
        "format": null
      }
    ],
    "@typescript-eslint/no-explicit-any": 0,
    "@typescript-eslint/ban-types": 0,
    "@typescript-eslint/explicit-module-boundary-types": [
      "warn",
      {
        "allowArgumentsExplicitlyTypedAsAny": true
      }
    ]
  }
}

 

prettier 설정 파일

//prettierrc

{
  "semi": false,
  "singleQuote": true,
  "printWidth": 120,
  "tabWidth": 2,
  "endOfLine": "lf"
}
반응형