pre-commit 기능을 이용해 커밋 전에 eslint와 prettier를 적용하는 과정에서 husky가 제대로 작동하지 않아서 .githooks
를 사용.
husky를 이용한 git hooks의 경우 .git
폴더와 같은 위치에 있어야 한다.
현재 우리의 프로젝트는 /project
아래에 각각 /frontEnd
와 /backEnd
디렉토리가 있다.
프로젝트 루트에 있는 .git
을 이용해 버전을 관리하고 있기 때문에 husky는 프로젝트 루트에 설치되어야 했다.
하지만, 프로젝트 루트에 package.json이 생기는 것을 원하지 않았고 각 디렉토리에서 개별적으로 eslint 및 prettier 규칙을 적용하고 싶었기 때문에 다른 방법을 찾아야 했다.
전체 코드에 대해 prettier와 eslint를 수행하는 것은 시간 적으로 비효율적이다.
현재는 코드의 양이 많지 않지만 추후 커밋을 수행할 때 많은 시간이 소모될 것을 우려해 lint-staged
모듈을 사용하기로 했다.
해당 모듈은 stage된 변경 사항에 대해서만 특정 명령을 수행할 수 있도록 해준다.
또한, husky를 이용하는 대신에 .githooks/pre-commit
쉘 스크립트를 사용하도록 했다.
git config core.hooksPath {.githooks 디렉토리 위치}
// 예시: git config core.hooksPath ./frontEnd/.githooks
위의 명령어를 이용해 githook이 저장된 경로를 설정할 수 있었다.
하지만, 추가적인 문제점으로 현재 프로젝트에는 frontEnd와 backEnd가 함께 존재했으며 각 디렉토리의 eslint와 prettier는 서로 다른 규칙을 갖고 있었다.
현재 개발자가 frontEnd 개발자인지 backEnd 개발자인지 구분하여 적절한 hook을 사용하도록 해야했다.