하나의 프로젝트에서 협업을 할 때에 코드 컨벤션은 더욱 중요시된다. 그래서 서로의 코드를 쉽게 보기 위한 노력의 일환으로 코딩 스타일을 일치시키기 위한 Linter, Code Formatting 도구를 사용한다.
이번 글에서는 이러한 도구들을 왜 사용하는지 목적을 되짚고, 목적을 제대로 충족하기 위한 가이드들을 정리했다.
(원티드 프리온보딩 수업을 듣고 정리한 글입니다. )
npm i eslint-config-prettier --save-dev : eslint에서 스타일링 관련 기능을 끄는 명령어이다. 스타일링은 전적으로 prettier에 위임하고 eslint에서 문법 교정만 담당하도록 역할을 나누어 충돌을 방지한다. npm install prettier --save-dev.prettierrc.확장자 파일을 통해서 설정할 수 있다. // .prettierrc.js
module.exports = {
printWidth: 100, // printWidth default 80 => 100 으로 변경
singleQuote: true, // "" => ''
arrowParens: 'avoid', // arrow function parameter가 하나일 경우 괄호 생략
};{
"env": {
"es6": true
},
"extends": ["./.eslintrc.base.js"],
"rules": {
"no-var": "warn" // var 금지
}
}npx prettier --write --cache . : 현재 폴더에서 prettier의 실행 결과를 파일에 저장한다. 변경된 사항이 없다면 캐싱된 내용을 가져와서 반복 검사를 수행하지 않는다. npx eslint --cache . 위 명령어를 매번 실행하는 것은 번거로우니 스크립트에 등록한다.
scripts : {
‘format’ : ‘prettier —write —cache .’,
'lint' : ‘eslint —wirte —cache .’,
}
이제 npm format && lint으로 코드 포맷팅이 자동화된다.
npm format && lint으로 코드 포맷팅의 자동화를 만들었지만, 사람이 입력하는 과정이 필요한만큼 휴먼 오류는 여전히 존재한다. npm install husky --save-dev
npx husky install
postinstall를 스크립트에 등록한다.
// package.json
{
"scripts": {
"postinstall": "husky install"
},
}
npx husky add .husky/pre-commit "npm run format && git add ."
git add . 명령어를 추가하여 자동화한다. npx husky add .husky/pre-push "npm run lint"
.husky/pre-commit 파일의 git add .이다. lint-staged 패키지를 이용하여 스테이징된 사항만 커밋할 수 있다. $ npm install lint-staged --save-dev
// package.json
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"postinstall": "husky install",
// husky에서 pre-commit으로 format을 실행하면 "lint-staged"스크립트를 실행한다.
"format": "lint-staged",
"lint": "eslint --cache ."
},
// 스테이징된 변경사항에 대해 아래의 작업을 수행한다.
"lint-staged": {
// .ts, .tsx 확장자 파일을 대상으로 한다.
"*.{ts,tsx}": [
"prettier --cache --write ."
]
},
git add . 로 인해 커밋의 불편함이 존재했다. #!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run format && git add .#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
npm run format