Eslint는 es와 lint의 합성어이다.
es는 우리가 흔히 말하는 es5 es6와 같이 ECMAScript를 뜻하는 것이고, lint는 보푸라기라는 뜻이다.
즉 우리가 사용하는 자바스크립트 파일의 지저분한 보푸라기들을 에러(혹은 경고)처리 해준다.
Eslint에서 기본적으로 설정한 규칙이 있고
다른 대표적인 eslint 설정은 airbnb를 많이들 사용한다.
$ npm i eslint --save-dev
가장 먼저 터미널 창에 eslint를 다운 받아준다.
(eslint는 동작 시에 사용할 일이 없는 개발 업무에 도움을 주는 패키지이기 때문에 dev로 집어 넣어준다.)
$ npx eslint --init
이후 eslint 파일을 생성 해주는데 생성 과정에서 여러가지 질문들이 나오는데
TypeScript를 사용 할 것인지 ?
React를 쓰는지 Vue를 쓰는지 ?
등등 질문에는 사용자가 답변을 해주면 된다.
그렇게 되면 .eslintrc 파일이 생성되게 된다.
//.eslintrc.js
module.exports = {
root: true,
env: {
browser: true,
es6: true,
node: true,
},
extends: [
'eslint:recommended',
'plugin:react/recommended',
'prettier',
],
};
위와 동일하게 설치되진 않고 기본적인 설치만 되었을 것이다.
필자는 위와 같이 설정을 하였고 eslint:recommended를 사용하기로 했다.
Eslint는 코드의 품질(?)을 책임져주는 녀석이다.
예를 들어
console.log()(function test(){})()
위와 같이 console.log 뒤에 세미콜론 없이 즉시 실행 함수를 사용하게 된다면 코드는 정상적으로 동작하지 않는다.
이러한 코드를 Eslint는 주시하고 있다가 우리에게 알려준다.
Prettier는 코드의 외모(?)를 담당한다.
코드의 들여쓰기는 몇칸으로 할 것인지 ?
코드 끝에 세미콜론을 꼭 붙일 것인지 ?
문자열 따옴표는 큰 따옴표인지 작은 따옴표인지 ?
등등을 설정해준다.
그렇다면 이쁘장한 코드를 만들러 가보자.
$ npm install prettier --save-dev --save-exact
먼저 터미널 창에 prettier를 다운 받아준다.
$ npm install eslint-plugin-prettier eslint-config-prettier --save-dev
위의 코드와 같이 plugin과 config를 다운 받아준다.
config는 eslint가 prettier와 충돌할 때 설정을 비활성화 해준다.
plugin은 코드 포맷을 할 때 prettier를 사용하게 해준다.
이후 코드 컨벤션을 팀원들과 함께 의논 후 적용해주면 된다.
//.prettierrc.js
module.exports = {
singleQuote: true,
// 문자열은 따옴표로 formatting
semi: true,
//코드 마지막에 세미콜른이 있게 formatting
tabWidth: 2,
// 들여쓰기 너비는 2칸
trailingComma: 'all',
// 자세한 설명은 구글링이 짱이긴하나 객체나 배열 키:값 뒤에 항상 콤마를 붙히도록 //formatting
printWidth: 80,
// 코드 한줄이 maximum 80칸
arrowParens: 'avoid',
// 화살표 함수가 하나의 매개변수를 받을 때 괄호를 생략하게 formatting
};
협업을 할 때 중요하다고 생각하는 것이 있는데
바로 약속이다.
프로그래머들은 그것을 코드 컨벤션이라고 부른다.
나에게는 익숙한 코드 형태이지만 누군가에겐 스파게티 코드로 보일 수도 있다
당연 기능 동작에는 무리가 없을 수 있으나 유지보수에선 끔찍한 경험을 할 수 있을 것이다.
협업을 하는데 있어 추후에 발생하는 에러와 유지보수를 감당해야 한다면 당연히 사용을 해야한다고 필자는 생각하고 있다.