git 명령어가 실행됨에 따라 사용자가 지정한 스크립트를 실행시켜주는 라이브러리이다. 개발자는 혼자 작업하는 경우가 드물고 여러명이서 협업하는 일이 대다수이다. 이때 미리 정한 코드 규칙들을 지키지 않는 경우도 종종 발생하고, 오류를 수정하지 않고 push하는 경우도 다반사이다.
이때 사용할 수 있는 것이 husky이다.
git에 올리기 전에 eslint, prettier와 같은 코드 포맷팅 라이브러리가 작동할 수 있게 해준다.
npm i husky
Husky 설정파일 만들기 ( .huskyrc, .huckyrc.json, .huskyrc.js, husky.config.js )
// package.json에 husky 설정 추가하기
"husky": {
"hooks": {
"pre-commit": "eslint --fix && prettier --write",
"pre-push": "npm test"
}
}
husky 설정
- pre-commit : 커밋 메시지를 작성하기 전에 실행하기
- prepare-commit-msg : 커밋 메시지 생성 후 편집기 실행전에 실행하기
- commit-msg : 커밋 메시지와 관련된 명령을 넣을 때 실행하기
- post-commit : 커밋이 완료되면 실행하기
- pre-push : 푸시가 실행되기 전에 실행하기
그러나 이런 식으로 하게 되면 매번 모든 코드를 검사해야한다.
이때 lint-staged를 사용하면 된다.
Git에 staged 상태인 파일만 lint해주는 라이브러리이다.
npm i lint-staged
{
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"pre-push": "npm test"
}
},
"lint-staged": {
"*.js": [
"eslint --fix"
"prettier --write"
]
}
}
pre-commit을 할 때 lint-staged가 작동되게 만들었으며 staged된 파일만 lint를 해준다.
참 여러가지 편한 기능들이 많은 것 같다. 아직은 실력이 부족하니 기본기를 다지도록 해보겠다...