[Husky] Mac OS에서 husky가 안 먹힐 때
작성:    
업데이트:
카테고리: Trouble Shooting
태그: Trouble Shooting
문제 상황
window 노트북을 업무용 노트북으로 사용하다가 macbook pro로 갈아탔는데, 기존에 잘 되던 husky의 pre-commit 기능이 정상적으로 작동되지 않았다.
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
yarn type-check
yarn lint-staged
원래는 yarn type-check
와 yarn lint-staged
를 commit 전에 실행하여 오류를 확인하고, 오류가 있으면 commit을 막는 기능을 하는데, mac os에서는 이게 작동되지 않았다.
그런데 이 이슈는 나만 겪은 것이 아니었다. husky github의 issue에서 비슷한 내용의 문제를 겪는 것을 발견할 수 있었다.
해결 방안
husky가 실행되지 않는 이유는 husky가 실행 권한이 없기 때문이라고 한다. 특히 window에서 프로젝트를 세팅한 뒤, WSL(Mac OS)에서 프로젝트를 실행하는 경우 문제가 생겼다고 한다. (나 역시 그랬다.)
아무튼 결론은 위 답변에서 제시한 명령어를 통해 husky에 실행 권한을 주면 된다.
chmod ug+x .husky/*
개선 사항
위의 명령어를 통해 권한을 부여하는 건 local 환경에만 적용된다. 하지만, 프로젝트를 공유하는 모든 사람들이 별도의 권한 설정 없이 사용하려면 package.json에 아래와 같이 설정해주면 된다.
{
...
"prepare": "husky install | chmod ug+x .husky/*",
}
추가 사항
chmod가 작동하지만 정상적인 해결책이 아닙니다. 트릭입니다. 우리는 모두 다른 OS에서 작업하고 있으며 도구는 각 OS에서 올바르게 작동해야 하며 도구 설정은 간단한 커밋/체크아웃을 통해 다른 OS에서도 이식 가능해야 합니다. 유일하게 허용되는 것은 자동으로 오류를 찾아서 수정하는 일종의 자동 사후 조정입니다(그리고 변경 사항을 커밋하도록 요청할 수도 있습니다).” - deepL 번역
즉, 위의 방법은 정상적인 해결책이 아니라고 한다. husky가 정상적으로 작동하도록 하려면, husky가 설치되는 OS에 맞게 설치해야 한다고 하며 질문자는 다시 의문을 제기했다.
다만 mac과 window에서 모두 작동하는 사례가 있으니, 일단은 이렇게 해결하고 추후에 다시 확인해보기로 했다.
References
husky issue #1777: hook was ignored because it’s not set as executable
댓글남기기