-
husky + lint-staged를 활용하여 git hook걸기Git 2021. 11. 10. 12:45728x90
이 글에서는 가장 많이 사용하는 git hook인 pre-commit을 기준으로 설명하겠다.
먼저 이 글을 작성하게 된 가장 큰 원인인 husky@4에서 사용하던 아래와 같은 방법을 사용할 수 없게 되면서 였다.
// package.json { ... "husky": { "hooks": { "pre-commit": "lint-staged" } } }
일단 나와 같이 husky가 설치되어 있는 사람의 경우 아래를 실행하여 husky의 버전을 올리고 husky를 init 해준다.
npm i -D husky@latest // husky@7.0.4 기준 npx husky install
처음 설치하는 사람의 경우 아래를 실행하여 간단하게 설치할 수 있다.
npx husky-init && npm install
위의 코드를 정상적으로 실행하였다면 project폴더에는. husky 폴더가 생성되었을 것이다.
그리고 협업이나 다른 PC에서의 작업할 때를 생각해 아래의 스크립트를 추가해 주면 좋다.
// package.json "scripts": { ... "prepare": "husky install", .. }
이제 간단하게 pre-commit 스크립트를 사용하기 위해 lint-staged를 설치해 준다.
npm i -D lint-staged
그리고 lint-staged에 pre-commit 하고 싶은 내용들을 추가한다.
// package.json { ... "scripts": { ... "lint-staged": "lint-staged" }, "lint-staged": { "**/*.{tsx,ts,jsx,js}": [ "eslint --fix", "prettier --write" ] } }
나는 project 내 모든 tsx, ts, jsx, js파일에 대하여 검사하기로 설정했다.
그리고 마지막으로 아래를 실행해 준다.
npx husky add .husky/pre-commit "npm run lint-staged"
그럼. husky파일에 pre-commit 스크립트가 생성되고 이것으로 모든 과정이 끝이다.
> lint-staged ✔ Preparing... ✔ Running tasks... ✔ Applying modifications... ✔ Cleaning up... [main 89c8cd1] test 1 file changed, 1 insertion(+), 1 deletion(-)
터미널에 생성한 task들이 나온 뒤 아래와 같이 검사 후 commit 된다면 정상 동작하는 것이다.
'Git' 카테고리의 다른 글
Git 원격 브랜치 삭제하기( Delete Remote Branch) (0) 2022.09.13 An unexpected error occurred: "packageName: Request failed \"401 Unauthorized\"와 "Couldn't find package "packageName" on the "npm" registry. 해결하기 (0) 2022.03.30 폴더 별 다른 Github 계정 설정하기 (0) 2021.12.16 Git local Branch 모두 삭제하기 (0) 2021.12.14 Github Push Access Error 고치기 (0) 2021.08.23