만족

[Nodejs] husky 를 이용한 Githook 추가 본문

[Nodejs] husky 를 이용한 Githook 추가

Nodejs Satisfaction 2022. 5. 23. 02:28

지난 포스트에서 jest, eslint를 적용해봤다.

 

그렇다면 이 스크립트를 커밋 전 실행해서 안전한 코드일때만 허가할 수는 없을까?

 

https://www.npmjs.com/package/husky

 

husky

Modern native Git hooks made easy. Latest version: 8.0.1, last published: 13 days ago. Start using husky in your project by running `npm i husky`. There are 2316 other projects in the npm registry using husky.

www.npmjs.com

husky

허스키를 사용하면 githooks 스펙을 손쉽게 사용할 수 있다.

 

https://git-scm.com/docs/githooks

 

Git - githooks Documentation

$GIT_DIR/hooks/* (or `git config core.hooksPath`/*)

git-scm.com

 

이 포스트에서는 pre-commit 을 활용해 커밋 전 eslint, test 를 실행해서 올바른 코드인지를 살펴보기로 한다.

 

설치

npm install husky --save-dev
npx husky install
npm set-script prepare "husky install"

 

githook(pre-commit) 설정

npx husky add .husky/pre-commit "여기에 커맨드를 입력하세요"

여기까지 하면 매 커밋마다 설정한 커맨드가 실행된다.

 

수정하려면 .husky/pre-commit 으로 가면 된다.

 

#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

yarn test && yarn lint

내 경우에는 commit 전에 test와 lint를 하도록 설정했다.

 

// package.json
{
  "scripts": {
    "prepare": "husky install",
    
    "test": "jest",
    "lint": "yarn eslint .",
  },
}

 

이렇게 하면 test나 lint 둘 중 하나라도 실패할 경우 commit이 abort된다.

 

git add *
git commit -m 'add pre-commit githook'

실제로 커밋해보면 아까 설정한 두 명령이 실행되고 그 결과에 따라 커밋 가능 여부가 결정되는 것을 알 수 있다.



Comments