husky

Tony·2022년 4월 9일
0

github

목록 보기
21/23

이전에 husky를 사용해서 git hooks을 설정 하여 eslint를 강제하는 것에 대한 포스트를 작성했었다.

그런데 그때 mrm 이란 패키지로 쉽게 설치를 했어서 이번에 다시 공부한 내용을 정리해보려 한다

husky @4 버전대와 다르게 @6버전 이상부턴 세팅하는 방법이 달라졌다
그래서 많은 강의 또는 블로그에 나와있는 것 처럼 package.json에 설정을 하는 방법은 더 이상 사용할 수 없다(@4 버전을 굳이 사용한다면 사용가능하다)

그래서 husky를 dev에 설치하고 yarn husky install을 실행해줘야 설정이 완료된다

  • dev에 설치하는 이유는 사용자한테 필요한 라이브러리가 아니고
  • global로 설치하면 다른 프로젝트에서 사용할 때 최신버전으로 사용한다는 보장이 없기 때문이다

yarn add --dev husky
yarn husky install

근데 조건이 하나 있는데 git이 node_module이 있는 곳에 같이 존재해야한다

monorepo로 관리를 한다면 git파일이 존재하는 최상위에 git-hooks를 설치해야 한다

yarn husky install을 입력하면
node_modules > .bin > husky에 install이란 명령어를 찾아서 실행 시키고
해당 레포(프로젝트)에 husky 기본 설정이 된다

이후 pre-commit 또는 pre-push 에 lint 설정을 해주고 싶다면
install에 의해 만들어진 .husky폴더 아래 pre-commit 파일을 만들고 그 안에 package.json의 script를 추가하면 된다
e.g.,
// .huscky > pre-commit
yarn lint

// package.json

"scripts" : {
  "lint": "stylelint './**/*.scss'"
}
  • eslint가 아닌 stylelint를 설정하는 도중 지난 포스트에 내용이 부족하다고 생각되어 보충하기 위해 이 포스트를 작성하였다.

문제점

위와 같이 세팅하면 아래와 같은 경고가 뜨면서 git hooks이 동작하지 않는다

hint: The '.husky/pre-commit' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`.

해결

chmod +x .husky/pre-commit

  • change mode 로 x(execute)를 더한다(+) .husky/pre-commit에
  • .husky/pre-commit에 실행 권한을 부여한다는 뜻

참고

profile
움직이는 만큼 행복해진다

0개의 댓글