티스토리 뷰
Husky를 이용하여 테스트 자동화 하는 이유
깃 action에서도 테스트 자동화를 할 수 있지만 월 2,000분만 무료로 제공하기 때문에 잦은 PR을 올리거나 테스트 개수가 많아졌을 때 비용이 들 수 있습니다. 그래서 push 혹은 commit 하기 전 로컬에서 테스트가 실패하거나 불필요한 코드가 같이 PR에 올라가는 지 확인하는 것이 좋다고 생각이 들었습니다.
설치
npm install husky --save-dev
npm install --save-dev lint-staged
적용 방법
package.json
lint-statged를 설정해 줍니다.
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
그리고 postinstall을 추가해 줍니다.
"postinstall": "husky install .husky"
. husky/pre-commit
. "$(dirname -- "$0")/_/husky.sh"
npx lint-staged
. husky/pre-push
. "$(dirname -- "$0")/_/husky.sh"
npm run test
에러 1
에러 코드
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 ug+x .husky/*
에러 2
원인
test에 jest --watch 설정이 되어있어서 허스키에서 테스트를 한 후 종료가 되지 않는 것이 원인이었습니다.
해결방법
test:ci라는 명령어에서는 --watch 옵션을 해제하고 pre-push에서 npm run test를 npm run test:ci로 변경해 주었습니다.
. husky/pre-push
. "$(dirname -- "$0")/_/husky.sh"
npm run test:ci
에러 3
원인
lint-staged 설정에서 eslint --fix라는 명령어가 올바르게 동작하지 않았는데 알고 보니 경로를 틀리게 설정했었다.
./ 을 없애고 나서야 제대로 동작했다.
"lint-staged": {
"./*.{js,jsx,ts,tsx}": [
"npx eslint --fix .",
"npx prettier --write ."
]
}
해결방법
"lint-staged": {
"*.{js,jsx,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
}
push일 때 테스트를 하는 사진
commit 할 때 eslint --fix와 prettier write를 하는 사진
참고자료
'자바스크립트' 카테고리의 다른 글
Dialog 태그 위로 토스트 보이도록 하기 (feat.TopLayer, createPortal) (2) | 2023.11.09 |
---|---|
Fetch로 추상화한 유틸 함수를 Axios 패키지로 마이그레이션 해보기 (0) | 2023.11.06 |
사용자가 업로드 한 이미지 압축하여 서버로 보내기 (feat.Browser Image Compression, Upload Images Converter, webp) (0) | 2023.10.04 |
프로그레시브 웹 앱(PWA)이란, 인앱 설치를 묻는 화면 구현하기 (feat.beforeinstallprompt) (0) | 2023.08.29 |
개발 환경 / 배포 환경 API URL 바꾸기 (feat. dotenv) (2) | 2023.08.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 아차산
- nextjs
- React
- env
- TopLayer
- 원티드
- 노마드코더
- 우아한테크코스
- NextApiRequest
- electron
- 노개북
- 스토리 북
- 윤성우 열혈C프로그래밍
- import/order
- 위코드
- nodejs
- jest
- 초보
- 프론트앤드
- C언어
- javascript
- createPortal
- Storybook
- CLASS
- NextRequest
- 북클럽
- error
- WSL2
- 프리온보딩
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함