해당 포스트는
Eslint
와Prettier
에 대한 포스트입니다.
🧱 ESLint
Lint
란 소스 코드에 문법적인 문제가 있는지 탐색하는 도구입니다.
그 중에서 ESLint
라는 도구를 사용해서 런타임 전에 미리 코드의 문제를 확인할 수 있습니다.
0️⃣ 설치
1
2
3
4
5
6
7
npm i -D eslint
# extends ( 예시용 )
npm i -D eslint-config-airbnb
# plugin ( 예시용 )
npm i -D eslint-plugin-import
eslint-config-airbnb
:airbnb
의 코드 스타일 가이드eslint-plugin-import
:ES6
모듈 시스템 구문 규칙 지원 플러그인
1️⃣ ESLint 설정 파일
.eslintrc.js
말고 .eslintrc.json
으로 생성하면 자동완성을 지원해줍니다.
.eslintrc.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["import"],
"extends": ["airbnb", "plugin:import/recommended"],
"rules": {}
}
airbnb
:airbnb
의 규칙 적용plugin:import/recommended
:ES6
모듈 시스템 규칙 적용
1. env
코드를 실행하는 환경마다 갖고 있는 전역변수들이 다릅니다.
특정 환경에 맞는 전역변수들이나 환경에 대한 린팅 문제를 해결하기 위한 설정 값입니다.
1
2
3
4
5
6
7
8
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
// ... 나머지 생략
}
2. plugin
누군가에 의해 이미 만들어진 rule
을 가져오는 옵션입니다.
가져온다고 적용되는 것은 아니고 그냥 설정 가능한 상태로 만드는 옵션입니다.
extends
에서 추가 설정을 해줘야 적용됩니다.
1
2
3
4
{
"plugins": ["import"],
// ... 나머지 생략
}
3. extends
이미 만들어진 린팅 규칙 혹은 plugin
으로 등록한 규칙을 적용하는 옵션입니다.
airbnb
, facebook
같은 곳에서 만들어둔 린팅 규칙을 바로 적용할 수 있습니다.
( eslint-config-airbnb-base
등 )
( eslint-config-
생략 가능합니다. )
1
2
3
4
{
"extends": ["airbnb", "plugin:import/recommended"],
// ... 나머지 생략
}
4. rules
자세한 규칙들은 eslint - rules에서 확인할 수 있습니다.
extends
로 설정된 rule
을 커스터마이징하는 옵션입니다.
즉, 기존 규칙에 필요한 부분만 커스터마이징하는 옵션입니다. ( 덮어쓰기 )
1
2
3
4
5
6
7
{
"rules": {
// 불필요한 세미콜론 사용 시 에러
"no-extra-semi": "error"
},
// ... 나머지 생략
}
🖌️ Prettier
코드 스타일을 관리해주는 도구입니다.
줄바꿈, 들여쓰기, 쌍따옴표, 화살표 함수등의 문법적으로 문제는 없지만 사람마다 다르게 사용하는 부분을 관리해주는 도구입니다.
0️⃣ Prettier 설정 파일
자세한
prettier
설정은 Prettier - Options를 참고해주세요.
.prettierrc.json
1
2
3
4
5
{
"singleQuote": false,
"tabWidth": 2,
// ...
}
만약
.prettierrc.json
와VSCode setting.json
에prettier
가 세팅되어 있다면.prettierrc.json
가 우선적으로 적용됩니다.
🎨 ESLint + Prettier
ESLint
와 Prettier
의 역할을 다르지만 중복으로 처리하는 부분이 있을 수 있습니다.
그런 충돌을 해결하기 위해서 아래와 같이 세팅해야합니다.
0️⃣ 설치
1
2
# eslint와 prettier의 호환성을 위함
npm i -D eslint-config-prettier eslint-plugin-prettier
eslint-config-prettier
:eslint
와prettier
가 중복되는 규칙이 있다면eslint
를 적용eslint-plugin-prettier
:eslint
의 규칙으로prettier
를 실행하고eslint
에서 문제 발생시킴
1️⃣ 설정 파일
.eslintrc.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"env": {
"browser": true,
"es2021": true,
"node": true
},
"overrides": [],
"parserOptions": {
"ecmaVersion": "latest",
"sourceType": "module"
},
"plugins": ["import", "prettier"],
"extends": ["airbnb", "plugin:import/recommended", "plugin:prettier/recommended"],
"rules": {
"prettier/prettier": "error"
}
}
plugin:prettier/recommended
:eslint-plugin-prettier
의 설정 적용
🐣 마무리
여러 문서와 포스트를 찾아보면서 설정을 했는데 이게 제대로 동작하는 건지 아닌 건지 확신이 안 들어서 제대로 정리한 것인지도 잘 모르겠네요… 🥲
일단 얼마후에 팀 프로젝트를 할 예정이라 미리 기본 세팅 방법들에 대해 공부해보고 있어서 아직 적용을 해보지 못한 상태입니다.
나중에 프로젝트를 진행하고 세팅에 문제가 있었거나 새롭게 이해한 부분이 생긴다면 다시 수정하겠습니다.