본문 바로가기

기타/개발환경

VSCode - Prettier, ESLint 사용하기

VSCode에서 제공해주는 기능이 많이 있어서 간혹 VSCode 자체에서 처리하는건지 설치한 익스텐션에서 처리하는건지 햇갈리는 경우가 있는데 특히나 fomatter 같은 경우 햇갈린다.

왜냐하면 VSCode, Prettier, ESLint 모두 포매팅 기능이 있기 때문이다.

따라서, 셋 중에 어떤 기능을 이용해서 포매팅해야할지 선택해야하는데

보통,

소스 스타일링은 - Prettier,

문법체크, 코딩 컨벤션 룰은 - ESLint 를 사용하고

VSCode는 에디터로써, 포맷을 어느 시점에 정리할지 등을 정의해두는 듯하다.

그니까.. 각 Tool이 지니고 있는 고유한 장점을 이용하는거다.

 

1. 설정하기 전에 필요한 패키지 설치

1.eslint-plugin-react: 리액트와 관련된 eslint 룰셋
2.eslint-config-prettier: eslint의 포매팅 기능 off
3.eslint-plugin-prettier: eslint에 prettier 포매팅 기능 on
$yarn add prettier --dev --exact  //react에는 eslint만 내장되어있고 prettier는 없으므로 설치
$yarn add --dev eslint-config-prettier eslint-plugin-prettier eslint-plugin-react

위와 같이 개발 디펜던시로 설치하고 VSCode 에서 Prettier, ESLint Extension을 설치한다.

2. VSCode 설정

-> VSCode에서 Prettier, ESLint Extension 설치

-> 여기에서는 VSCode 설정화면에서 설정할 수도 있지만 윈도우 기준 [ Ctrl + , ] 명령어를 통해서  우측 상단에 "설정 열기(JSON)" 을 클릭하거나, [ Ctrl + Shift + P ] 를 이용해서 ">open settings"를 통해 settings.json 파일을 직접 수정하는게 개인적으로 훨씬 편하다.(설정 화면에서는 항목들이 너무많아 잘 안보임...ㅠㅠ)

여기서 설정은 취향대로하되, 아래 설정을 해두면 좋다.

"editor.formatOnSave": false // Prettier를 사용하기 위해 VSCode 자체 포매팅 off
"editor.tabSize": 2          // 일단 에디터에도 탭 눌렀을 때 두 칸 설정ㅋㅋ 이유는 가독성면에서 좋음
//"eslint.autoFixOnSave": true => Deprecated 된 프로퍼티 로써 저장시 ESLint를 통한 자동 수정을 위해서
"editor.codeActionsOnSave": { "source.fixAll.eslint": true } => 로 대신 사용해야함
"eslint.validate": ["javascript", "javascriptreact", "typescript", "typescriptreact", "html", "vue", "css"],
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2,
    "editor.formatOnSave": true
  },
  "[css]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.tabSize": 2,
    "editor.formatOnSave": true
  },
 "[javascript]": {  // javascript 의 기본 포맷터는 prettier, 저장시 포매팅
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
 },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode",
    "editor.formatOnSave": true
  }

 

3. Prettier 설정

리액트에서 여러가지 설정 방법이 있는데 루트 디렉토리에서 ".prettierrc" 파일을 만들고 javascript object로 구성하는게 편리하다..

{
  "trailingComma": "none", // array등에서 마지막 항목에 콤마를 붙일건지 말건지.. 안붙이게 설정
  "tabWidth": 2, // 탭 2칸
  "semi": true, // 세미콜론 있게 설정
  "singleQuote": true, // 따옴표
  "bracketSpacing": true, // 괄호 열었을때 공백 넣을지 여부
  "jsxBracketSameLine": true, // 멀티 라인에서 > 닫는부분을 < 와 맞출지 여부
  "printWidth": 200
}

자세한 Prettier 옵션은 요기서

자세한 Prettier 설정은 요기서

 

4. ESLint

ESLint 또한 파일로 만드는게 편함. 여기서 rules 속성에 엄청나게 많고 유용한 기능들이 많다.

옵션 확인은 여기서

{
  "extends": [
    "react-app",
    "plugin:react/recommended",
    "plugin:prettier/recommended"
  ],
  "rules": {
    "prettier/prettier": [
      "error"
    ],
    "no-var": "error"
  }
}

 

=> react-app와 plugin:react/recommend의 차이는??

 

 

5. TypeScript React Project에서 ESLint, Prettier 적용

  • yarn add @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-react --D
  • yarn add prettier eslint-config-prettier eslint-plugin-prettier -D

// @typescript-eslint/parser: eslint에 타입스크립트 파서 사용
// @typescript-eslint/eslint-plugin: 타입스크립트 룰 모음집
// eslint-plugin-react: 리액트와 관련된 eslint 룰셋

// eslint-config-prettier: eslint의 포매팅 기능 삭제
// eslint-plugin-prettier: eslint에 prettier의 포매팅 기능 추가

 

 

 

참고