성장, 그리고 노력

부족하더라도 어제보다 더 잘해지자. 노력은 절대 배신하지 않는다.

도구, 기술, 이론/npm

[npm] 패키지 추천 husky

제이콥(JACOB) 2019. 12. 10. 01:33

허스키는 강아지가 아니라 npm 라이브러리 중에 하나입니다.

git hook을 사용하는데에 여러가지 용도로 사용할 수 있지만, 이 글에서는 간단한 사용법만 짚고 넘어가겠습니다. 

(참고: https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)

 


 

제 Mac이 이상한건지 설정을 잘못한건지, eslint 설정은 잘 되어있으나, 저장을 두번, 세번하면 eslint가 깨지는 현상이 있었습니다.

아래 방법은 eslint가 깨졌다면, commit 자체를 막는 방법입니다.

> npm i huksy

 

그 다음 `package.json` 에 아래와 같이 추가해 줍니다.

... 
},
  "husky": {
    "hooks": {
      "pre-commit": "eslint 'src/app/**/*.{ts,tsx}'" // 이 부분은 프로젝트에 맞게 설정해주시면 됩니다.
    }
  }

 

cf) `package.json` 대신 `.huskyrc` 파일을 최상위 경로에 만들어서 관리할 수도 있습니다.

{
  "hooks": {
    "pre-commit": "eslint 'src/app/**/*.{ts,tsx}'"
  }
}

 

이렇게 설정 후 commit을 하면~

 커밋 자체를 막고, 어디가 잘못되었는지 표시해 줍니다. 그리고 `import` 되었는데 사용하지 않거나, 선언만 하고 미사용인 부분까지 모두 알려줍니다 :)

 또한 리뷰시에 lint에 대한 부분을 고려하지 않고 코드에 집중할 수 있다는 장점도 있습니다. 다만, `husky`의 단점은 `husky`만 적용시에는 모든 파일을 모두 `commit`시마다 검사합니다. 

 그래서 약간 커밋되는데 시간이 걸릴 수 있습니다^^;;

이를 해결하기 위한 방법으로는 lint-staged를 적용하면, 스테이지에 올라온 파일만 검사하게 됩니다.

(https://www.npmjs.com/package/lint-staged)

반응형

'도구, 기술, 이론 > npm' 카테고리의 다른 글

[npm] 버전 관리 기초 지식(caret, tilde)  (0) 2019.12.10
[npm] 패키지 추천 npm-check  (0) 2019.12.09