article thumbnail image
Published 2022. 7. 29. 12:04

가장 처음으로 올린 글이 git에 관한 내용이였다. Husky는 이 git에 관련하여 지난번 ESLint나 prettier 같은 역할을 해준다고 생각하면 편할 것 같다. 적어도 나는 그런식으로 느껴졌다! git은 개발자들간의 협업에 있어 거의 필수라 해도 과언이 아니므로 마찬가지로 이 Husky도 자주 접하게 될 것이므로 미리미리 공부해두자!


 git hook

 

Husky에 대해 알기 위해선 먼저 git hook이라는 것을 먼저 알아야한다. git hook이란 Git 저장소에서 특정 이벤트가 발생할 때 자동으로 실행되는 스크립트로 모든 git repository에서 지원이 된다. 특정 이벤트란 예를들어 commit을 하거나 push를 하는 등의 행위를 말한다. 생각보다 특정상황이 그렇게 많진 않았다. 각 스크립트가 실행되는 자세한 상황들은 이곳 주소에서 확인할 수 있다! https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

 

 

Git - Git Hooks

If you’re writing a script/hook that others will need to read, prefer the long versions of command-line flags; six months from now you’ll thank us.

git-scm.com

 

.git/hooks폴더에 들어가면 공식 스크립트 샘플이 담겨져 있는 것을 확인 할 수 있는데 그곳에서 직접 커스터마이징하여 hook을 사용 할 수 있다지만 나는 아직 코린이니까 괜히 그런거 건들이기보다는 편하게 쓰고 싶었다. 그래서 사용하게 된 것이 이 husky다.

 

직접 아무 레포지토리에서 git/hooks sample을 확인해보았다.

Husky

귀엽지만 이 husky 아님

 다른 사람들과 git을 통해 협업을 할 때 서로 다른 포맷으로 작성된 코드들을 통일시켜주기 위해 prettier 나 ESLint를 사용한다고 지난번에 말했는데 이들이 적용되지 않은 채로 git에 올라오는 경우가 있다. 따라서 이 husky를 통해 그런 경우 코드를 정리하도록 도와주고 미리 테스트를 해보기도 한다. husky를 사용하면 위의 .git/hooks 폴더를 직접 커스텀하지 않고 git hooks 스크립트를 제어 할 수 있게 도와준다. 먼저 설치를 하자!

// npm
npm install husky --save-dev

// yarn
yarn add -D husky

 설치를 하고나면 pakage.json 폴더에서 실행하고자 하는 스크립트를 명시하고 직접 사용할 수 있다. npm 사이트에서 husky에 대한 사용예제를 찾아볼 수 있었는데 이곳에서는 prepare라는 스크립트를 예시로 들어서 사용하였다. 물론 실제 git의 훅과 동일하기 때문에 git hooks만 알고있다면 따로 명령어를 외워서 적을 필요는 없다. 또한 hook을 결합하여 사용하기도 하였는데 이를테면

git add .husky/pre-commit

와 같이 사용하여 husky와 pre-commit을 동시에 수행하도록 사용하였다. 나는 아직 아주 기본적인 기능들만 사용하지만 추후에는 멋지게 이기능 저기능 엮어서 사용하고 싶다.

 

 


 

Reference

https://www.npmjs.com/package/husky - husky-npm 공식문서
https://techblog.woowahan.com/2530/ - 훅으로 Git에 훅 들어가기 | 우아한 형제들 기술블로그
https://ms3864.tistory.com/412 - husky로 git hook 관리하기

'오늘의 공부 정리' 카테고리의 다른 글

11. TypeORM  (0) 2022.08.04
10. TypeScript (부제_타입추론)  (0) 2022.08.03
08. ESLint & Prettier  (0) 2022.07.28
08. pakage.jason 파일  (0) 2022.07.27
07. Callback 함수  (0) 2022.07.27
복사했습니다!