본문 바로가기
Web/Notepad

[React] - ESLint 설치 및 설정

by 리슨업 2024. 3. 26.

 

 

Eslint 

1. Eslint 설치

npm install eslint@lates --save-dev

 

 

 

2. npx eslint --init

❗이때 .eslintrc.json 파일 생성

 

 

3. 핵심 플러그인 설치

  "eslint",   ⭐ ⭐  ⭐  JavaScript와 JSX 파일의 코드 품질과 코딩 스타일 문제를 식별하기 위한 도구
 " eslint-plugin-import ",    ES6+의 import/export 문법과 관련된 문제를 식별하는 ESLint 플러그인

 " eslint-plugin-react  ",  ⭐  ⭐  React와 JSX 파일의 특정 규칙을 적용하기 위한 ESLint 플러그인 

 "plugin:jsx-a11y/recommended",    jsx-a11y 플러그인 추가  / 웹접근성 관련
 "plugin:react-hooks/recommended", ⭐   React Hooks 플러그인 추가 
 "prettier", ⭐  ⭐  Prettier와 충돌하지 않는 규칙들을 비활성화
 "plugin:prettier/recommended" ⭐  ⭐   Prettier 플러그인을 확장하며, Prettier 규칙을 ESLint 규칙으로 적용

 

 

한번에 설치 npm 명령어..

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

 

 

 

4. React EsLinit 설정

{
    "root": true, // 이 설정 파일이 ESLint의 최상위 설정임을 명시합니다.
    "env": {
        "browser": true, // 브라우저 전역 변수를 사용할 수 있도록 설정합니다.
        "es2021": true // ES2021 문법을 사용할 수 있도록 설정합니다.
    },
    "extends": [
        "eslint:recommended", // ESLint의 기본 권장 설정을 확장합니다.
        "plugin:react/recommended", // react 플러그인의 권장 설정을 확장합니다.
        "plugin:@typescript-eslint/recommended", // typescript-eslint 플러그인의 권장 설정을 확장합니다.
        // "plugin:jsx-a11y/recommended", // jsx-a11y 플러그인의 권장 설정을 확장합니다. 접근성 관련 규칙을 제공합니다.
        "plugin:react-hooks/recommended", // React Hooks 플러그인의 권장 설정을 확장합니다. Hooks 규칙을 제공합니다.
        "prettier", // Prettier와 충돌하지 않는 ESLint 규칙을 설정합니다.
        "plugin:prettier/recommended" // Prettier 플러그인을 확장하며, Prettier 규칙을 ESLint 규칙으로 적용합니다. [충돌남]
    ],
    "parser": "@typescript-eslint/parser", // TypeScript 코드 분석을 위한 파서를 설정합니다.
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true // JSX 문법을 사용할 수 있도록 설정합니다.
        },
        "ecmaVersion": 12, // ECMAScript 2021 문법을 사용할 수 있도록 설정합니다.
        "sourceType": "module" // ES6 모듈 문법을 사용할 수 있도록 설정합니다.
    },
    "plugins": [
        "react", // React 플러그인을 사용합니다.
        "@typescript-eslint", // TypeScript ESLint 플러그인을 사용합니다.
        "import", // import/export 문을 다루는 데 도움을 주는 플러그인입니다.
        // "jsx-a11y", // 접근성 관련 jsx-a11y 플러그인을 사용합니다.
        "react-hooks", // React Hooks 관련 규칙을 제공하는 플러그인입니다.
        "prettier" // Prettier 플러그인을 사용합니다.
    ],
    "rules": {
        "react/display-name": 0, // React 컴포넌트가 displayName을 가져야 함을 요구합니다.
        "react/jsx-key": 2, // 반복되는 JSX 엘리먼트에 key 속성이 있어야 함을 요구합니다.
        "react/jsx-no-duplicate-props": 2, // JSX 엘리먼트에서 중복된 props 사용을 금지합니다.
        // "react-refresh/only-export-components": [
        //     1, // React Fast Refresh를 위해 파일에서 컴포넌트만 export하도록 경고합니다.
        //     { "allowConstantExport": true } // 상수의 export를 허용하는 옵션입니다.
        // ],
        // "react/prop-types": "off", // prop-types 사용을 비활성화합니다.
        "react/react-in-jsx-scope": "off", // Next.js 또는 Create React App과 같이 React를 import하지 않아도 JSX에서 React를 사용할 수 있도록 허용합니다.
        // "prefer-const": ["error", { "destructuring": "all" }], // 가능한 경우 const를 사용하여 변수를 선언하는 것을 선호합니다.
        // "@typescript-eslint/explicit-module-boundary-types": "off", // TypeScript 함수의 반환 유형이 명시적으로 선언되지 않은 경우 경고를 비활성화합니다.
        // "@typescript-eslint/no-explicit-any": "off" // any 타입의 사용을 비활성화합니다.
        "prettier/prettier": [
            "error",
            {
                "endOfLine": "auto"
            }
        ],
        "react/prop-types": "off"
    }
}

 

 

 

 

Prettier

1. Prettier 설치

npm install --save-dev --save-exact prettier

❗ --save-exact 버전의 변화로 스타일 변화를 막기위함으로 설정함

 

2. Vscode 설정

[window 기준]

1. ctrl + ' * 설정탭

2. JSON 설정 열기

3. 아래 설정 확인 및 반영

{
  // 파일을 저장할 때 자동으로 포맷팅을 적용합니다. Prettier를 기본 포맷터로 사용 설정이 활성화되어 있을 때 유용합니다.
  "editor.formatOnSave": true,

  // Prettier 확장을 기본 코드 포맷터로 설정합니다. 이 설정은 Prettier를 사용하여 코드 스타일을 일관되게 유지하는 데 도움이 됩니다.
  "editor.defaultFormatter": "esbenp.prettier-vscode",

  // 저장 시 ESLint에 의한 자동 수정을 활성화합니다. `source.fixAll.eslint` 설정을 통해 ESLint의 자동 수정 기능을 사용할 수 있으며, "explicit"은 이 기능을 명시적으로 활성화합니다. 
  // Prettier와 함께 ESLint를 사용하는 경우 코드를 저장할 때 ESLint 규칙에 따라 코드가 자동으로 수정됩니다.
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": "explicit"
  },

  // JavaScript, JSX, TypeScript, TSX 파일을 ESLint로 검사하고 수정합니다. 
  // 이 설정은 Prettier와 함께 ESLint를 사용할 때, VSCode에서 해당 언어 파일에 대해 ESLint 검사를 활성화합니다.
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ]
}

 

 

 

 

3. 프리티어 설정 .prettierrc.js or json..

아래의 프로퍼티를 가져다가 써주면 된다. 

// {
//     "arrowParens": "avoid", // 화살표 함수 괄호 사용 방식
//     "bracketSpacing": false, // 객체 리터럴에서 괄호에 공백 삽입 여부
//     "endOfLine": "auto", // EoF 방식, OS별로 처리 방식이 다름
//     "htmlWhitespaceSensitivity": "css", // HTML 공백 감도 설정
//     "jsxBracketSameLine": false, // JSX의 마지막 `>`를 다음 줄로 내릴지 여부
//     "jsxSingleQuote": false, // JSX에 singe 쿼테이션 사용 여부
//     "printWidth": 80, //  줄 바꿈 할 폭 길이
//     "proseWrap": "preserve", // markdown 텍스트의 줄바꿈 방식 (v1.8.2)
//     "quoteProps": "as-needed" // 객체 속성에 쿼테이션 적용 방식
//     "semi": true, // 세미콜론 사용 여부
//     "singleQuote": true, // single 쿼테이션 사용 여부
//     "tabWidth": 2, // 탭 너비
//     "trailingComma": "all", // 여러 줄을 사용할 때, 후행 콤마 사용 방식
//     "useTabs": false, // 탭 사용 여부
//     "vueIndentScriptAndStyle": true, // Vue 파일의 script와 style 태그의 들여쓰기 여부 (v1.19.0)
//     "parser": '', // 사용할 parser를 지정, 자동으로 지정됨
//     "filepath": '', // parser를 유추할 수 있는 파일을 지정
//     "rangeStart": 0, // 포맷팅을 부분 적용할 파일의 시작 라인 지정
//     "rangeEnd": Infinity, // 포맷팅 부분 적용할 파일의 끝 라인 지정,
//     "requirePragma": false, // 파일 상단에 미리 정의된 주석을 작성하고 Pragma로 포맷팅 사용 여부 지정 (v1.8.0)
//     "insertPragma": false, // 미리 정의된 @format marker의 사용 여부 (v1.8.0)
//     "overrides": [
//       {
//         "files": "*.json",
//         "options": {
//           "printWidth": 200
//         }
//       }
//     ], // 특정 파일별로 옵션을 다르게 지정함, ESLint 방식 사용
//   }

 

 

 

 

주의점

esLint extends설정에 있어서 eslint-config-pretter인 ["prettier"] 와 eslint-plugin-prettier의 ["plugin:prettier/recommended"]는 한 세트로 가져가야 한다. 

 

"prettier",  ❗ -  Prettier와 충돌하지 않는 ESLint 규칙을 설정합니다.
"plugin:prettier/recommended" - Prettier 플러그인을 확장하며, Prettier 규칙을 ESLint 규칙으로 적용합니다.

 

만일 prettier / config를 사용하지 않는다면 eslint와 충돌이 나버리게 되니 이 점만 주의하고 품질 좋은 코딩라이프를 즐기면 된다.

 

'Web > Notepad' 카테고리의 다른 글

[useQuery] StaleTime , gcTime  (0) 2024.03.21
import BaseUrl 지정하기  (0) 2024.03.14
[MySQL] CRUD / 오름 내림차순  (0) 2024.02.13
23/12/25 Auth  (0) 2023.12.26
23/12/21 디바운싱  (1) 2023.12.22