team logo icon

prettier, eslint에 대해

prettier, ESLint에 대해 알아보고 간단하게 적용까지 해보았습니다!

목차

  • prettier

  • eslint

  • React + TypeScript에 Prettier, ESLint 적용하기

Prettier

  • 코드 포맷팅을 위한 vscode extension

  • 사용자가 직접 코드 포맷팅 형식 지정 가능

  • 협업 프로젝트에서의 코드 통일성과 개발 생산성 향상 가능

prettier 옵션 설정 방법

  1. package.json 파일에 prettier 설정

//package.json
{
	...
	"devDependencies": {
	    "@types/react": "^18.2.66",
	    ...
	    "prettier": "3.2.5",
	    "vite": "^5.2.0"
	  },
  "prettier": {
    "singleQuote": true,  
    "printWidth": 100,
    "arrowParens": "avoid",
    "tabWidth": 8
  }
}



  1. 별도의 설정 파일 생성

별도의 파일을 생성해서 옵션을 설정할 수도 있다!

Prettier 속성 파헤치기

홀따옴표

  • default: 문자열에 쌍따옴표(””)

  • 홀따옴표(’)를 사용하고 싶다면

{
  "singleQuote": true
}



한 줄 최대 글자수

  • default: 한 줄에 최대 80자

  • 최대 글자수를 늘리고 싶다면

{
	  "printWidth": 100
}



세미콜론

  • default: 각 문장 뒤에 세미콜론 붙임

  • 세미콜론을 생략하고 싶다면

{
  "semi": false
}



후행 쉼표

  • default: 여러 줄에 걸친 배열이나 객체, 매개변수의 마지막 요소에도 쉼표를 붙임

  • 쉼표를 제거하고 싶다면

{
  "trailingComma": "none"
}



탭 사용

  • default: 들여쓰기할 때 탭 문자 대신 여러 개의 공백 문자 사용

  • 탭 문자로 들여쓰기하고 싶다면

{
  "useTabs": true
}



탭 너비

  • default: 탭 너비 공백 2칸 사용

  • 탭 너비를 조정하고 싶다면

{
  "tabWidth": 4
}



포맷팅을 원치 않는 파일

  • Git과 같은 버전 컨트롤 시스템에서 사용하는 디렉토리와 npm 패키지가 저장되어 있는 디렉토리는 포맷팅 수행하지 않음

  • 이 외에 포맷팅을 하지 말아야 한다면

    • .prettierignore 파일을 생성하고 그 안에 경로 나열!

설정 옵션과 관련하여

Prettier의 기본 설정은 자바스크립트 커뮤니티에서 오랫동안 합의된 관행과 모범 사례를 기반으로 결정되었고 사용자의 피드백을 수렴하고 최신 트랜드를 반영하기도 한다고..

⇒ 설정 옵션 변경을 최소화하는 것을 추천 //인용 출처: https://www.daleseo.com/js-prettier-config/

ESLint

  • 자바스크립트 문법의 에러를 표시해주는 자바스크립트 linter

  • linter

    • 소스 코드를 분석하여 프로그램 오류, 버그, 스타일 오류, 의심스러운 구조체에 표시(flag)를 달아놓기 위한 도구

ESLint 설정 옵션

설정 파일

  • 다양한 형식의 설정 파일 지원 (ex, JSON, YAML, JavaScript)

    • 설정 파일 이름 = .eslintrc.확장자 ⇒ (ex. .eslintrc.json, .eslintrc.yml)

    • 설정 파일을 사용하지 않고 package.json파일의 eslintConfig속성으로 ESLint 설정도 가능

      • but 규모가 커질수록 유지보수와 가독성을 위해 설정파일에 관리하는 것 추천

root

  • ESLint 설정을 위한 여러 개의 파일 생성 가능

  • root 속성의 값이 true로 되어있는 설정 파일까지만 적용됨

    • 상위 폴더에 있는 설정 파일에 영향 받지 않으려면 root를 true로 설정!

env

  • env는 environment의 줄임말로, 설정 환경에 대한 값

  • 프로젝트가 어떤 “환경”에서 실행되는 코드인지 말해주는 부분

//package.json
{
	"name": "package",
	...
	"env": {
		"brower": true
	},
}



plugins

  • 기본 규칙 외의 추가적인 규칙을 사용 가능하게 함

  • 단지 사용 가능하게 하는 도구라 extends나 rules를 통해 추가적인 설정을 해야 실제로 작동함

extends

  • 공개되어 있는 설정을 가져와 base로 설정 가능

    • Google, Facebook, Airbnb와 같은 기업에서 공개

{
	"extends": ["airbnb"]
}



실제 적용해보기

react + typescript, vite, yarn 환경입니다!

먼저, 리액트 프로젝트를 생성!

yarn create vite



위의 코드로 설치를 시작하면 여러가지 질문들에 답을 하고

vite로 프로젝트를 생성해보면 자동으로 .eslintrc파일이 생성!

짜잔~~ 요렇게! 이 아래는 저의 초기 eslintrc파일입니다


이제 이 파일에 원하는 설정 옵션을 설정해주면 됩니다.!

그러면 코드를 작성하다가 에러가 뜨는데 에러창을 보면 eslint가 만들어주는 에러라고 뜨게됩니다. 그때는 괜히 했나 생각이들기도했지만 에러를 참 잘 잡아주는 것 같더라구요 ^ __ ^

Prettier

프리티어 설치는 터미널에서 yarn (또는 npm) 명령어로 합니다

yarn add prettier --dev



설치 중인 모습…

  • 여기서 프리티어랑 eslint 모두 스타일을 건들 수 있으니 충돌을 방지하기 위해 plugin을 설치해줍니다

yarn add eslint-plugin-prettier --dev



그 후 .prettierrc 파일을 만들고 원하는 규칙을 생성해줍니다~~

  • 위에서 다뤘던 규칙들을 사용해봅시다 😊

이렇게 순조롭게 진행되는 줄 알았지만.. 규칙을 바꿔봐도 적용이 안되는 것을 발견했다….!

트러블 슈팅

  • 생긴 문제

    • 프리티어를 설치만 하고 실제로 적용이 되는지는 확인해보지 않았었다… 되고 있는 줄알았다 ㅎㅎ

    • 이번에 프리티어 옵션 설정을 실제로 해보려고 했는데 변함이 없는것이다!??!

그래서 눈에 띄는 탭사이즈를 8로 했는데도 여전히 2로 되어 있었다…..!

..적용 안됨

혹시 몰라서 프리티어를 다시 설치도 해봤지만 여전히 똑같음..

그러던 중 프리티어 적용에 대한 아티클을 하나 찾았다

Vscode Prettier 적용 안됨 고치는법

이 아티클처럼 따라가 보았다..

Fomat on Save을 체크해주고..

default Formatter도 Prettier로 바꿔주었다

(default Formatter 찾기 힘드시면 검색으로 해보세요!)


위의 두개를 설정하고 파일 돌아와서 수정한 것을 저장하면

== 된다!!!! 😊

이번 트러블 슈팅을 통해 알게 되었는데


vscode 하단에 있는 Prettier가 체크 표시가 되면 해당 파일에 적용이 된 것이고,


위처럼 체크표시가 두 번 겹쳐져 있으면 적용이 안되었다는 뜻이었다..!!

이 당연한걸 몰랐냐고 하시면.. 넵 몰랐습니당ㅎㅎ

Prettier와 ESLint 적용과 트러블 슈팅까지 끝!


감사합니다~~


최신 아티클
lighthouse에 대해
문성희
|
2024.05.13
lighthouse에 대해
lighthouse에 대해
prettier, eslint, styleLint에 대해
이진
|
2024.05.10
prettier, eslint, styleLint에 대해
4주차 공유과제
Article Thumbnail
박채연
|
2024.05.10
Prettier, ESLint, StyleLint
prettier, eslint, stylelint