1. Husky란?
- husky는 git hook사용을 도와주는 라이브러리이다. git hook은 뭘까?
- git hook은 git도 다른 버전 관리 시스템처럼 어떤 이벤트가 생겼을 때 자동으로 특정 스크립트를 실행하도록 할 수 있다. 이 훅은 클라이언트 훅과 서버 훅으로 나눌 수 있다. 클라이언트 훅은 커밋이나 Merge 할 때 실행되고 서버 훅은 Push 할 때 서버에서 실행된다.
- 따라서, husky를 사용하면 git을 사용할 때 특정 스크립트를 실행시킬수 있느 라이브러리이다.
1 - 1. 사용법
- 사용되는 예시를 찾아보면, prettier, lint, test가 있다. 협업을 진행하다 보면 prettier나 lint가 적용되지 않고 git에 올라오는 경우가 가끔씩 존재한다고 한다. 이런 경우에 husky는 참말로 유용하다. 또, 코드를 수정하면서 기능적인 부분이 달라진다면 테스트 코드도 실행해 봐야 한다. 직접 하는 방법도 있지만, 우리는 사람이다...
그래서 github actions에서도 린트나 테스트를 미리 실행시켜 본다고도 한다.
- 우선, yarn add -D husky를 이용해 husky를 설치 한다.
- 그다음, package.json에 코드를 작성한다.
"scripts": {
"prepare": "husky install",
- 그 다음, yarn prepare로 husky 폴더를 생성 한다.
아래 코드로 특정 이벤트에 실행할 스크립트를 넣어 준다. 훅은 실제 git의 훅과 동일하기 때문에 git hooks만 알고 있다면 따로 명령어를 외울 필요가 없다고 한다. 나중에 git hook도 따로 공부해서 올려야겠다.....
- 아래 코드는 commit을 했을 때 lint를 실행하고 push를 했을때 test를 하는 코드다.
"scripts": {
"lint:fix": "eslint src --ext .ts --parser-options=project:'tsconfig.json' --fix",
lint-staged": "lint-staged"
},
"lint-staged": {
"*.{ts,tsx}": [
"yarn lint:fix",
"prettier --write"
]
},
마무리
=> Husky는 앞에서 공부한 eslint, prettier와도 연관이 있고, git hook사용을 도와주는 라이브러리이기 때문에, 저 4개의 개념을 같이 묶어서 직접 구현해서 공부할 필요가 있는거 같다.