이전에 husky를 사용해서 git hooks을 설정 하여 eslint를 강제하는 것에 대한 포스트를 작성했었다.
그런데 그때 mrm 이란 패키지로 쉽게 설치를 했어서 이번에 다시 공부한 내용을 정리해보려 한다
husky @4 버전대와 다르게 @6버전 이상부턴 세팅하는 방법이 달라졌다
그래서 많은 강의 또는 블로그에 나와있는 것 처럼 package.json에 설정을 하는 방법은 더 이상 사용할 수 없다(@4 버전을 굳이 사용한다면 사용가능하다)
그래서 husky를 dev에 설치하고 yarn husky install을 실행해줘야 설정이 완료된다
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'"
}
위와 같이 세팅하면 아래와 같은 경고가 뜨면서 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