# git hook

15개의 포스트

생산성을 높이는 협업 방법

하나의 프로젝트에서 협업을 할 때에 코드 컨벤션은 더욱 중요시된다. 그래서 서로의 코드를 쉽게 보기 위한 노력의 일환으로 코딩 스타일을 일치시키기 위한 Linter, Code Formatting 도구를 사용한다. 이번 글에서는 이러한 도구들을 왜 사용하는지 목적을 되짚고, 목적을 제대로 충족하기 위한 가이드들을 정리했다. (원티드 프리온보딩 수업을 듣고 정리한 글입니다. ) ESLint, Prettier 알아보기 ESLint란? 코드의 일관성과 버그 방지를 위해 만들어진 툴이다. 코드의 문법 교정과 더불어 가벼운 코드 스타일링도 제공한다. 설정 커스터마이징을 통해 규칙 커스텀이 가능하다. 규칙에 정의된 문법에 어긋난 코드에 대해서는 경고를 띄워준다. Prettier란? 코드의 일관된 스타일을 위한 툴이다. 포맷팅 규칙 커스텀

2023년 8월 23일
·
0개의 댓글
·
post-thumbnail

Husky & GitHub Action으로 코드 검사 자동화하기

회사에서 마이그레이션을 진행하면서 포맷팅이 제대로 안 된 코드가 많아졌고, github 레포지토리를 변경했을 때 기존의 build workflow를 다시 등록 안 하는 바람에 type error 위험성이 커지기도 했다. 코드를 자동으로 검사하는 데에 Husky와 GitHub Action이 편리해 보여서 이 둘을 try 해보았다! 본 글에서는 yarn을 사용하였고, prettier/eslint는 이미 셋업되어 있다고 가정한다. 이 글에선 이들에 대해서는 자세히 다루지 않을 예정이다. Husky > git hook 설정을 도와주는 라이브러리 git hook은 commit/push와 같은 git 관련 이벤트가 발생했을 때 특정 스크립트를 실행할 수 있도록 해주는 기능이다. husky를 이용하면 라이브러리 설치 시 자동으로 git hook들을 설정해 줄 수 있어서 팀원들과 공유하기에 용이하다. husky의 작동 방식을 미리 한 줄 요약하면, > 이벤트 발생

2023년 6월 27일
·
0개의 댓글
·
post-thumbnail

[Wanted]_과제를 하기에 앞서 알아야 할 팀으로 일하는 법, 개발자의 기본기

1. OverView 하드 스킬 (기술적인 역량) 프로그래밍 언어와 기술 스택에 대한 이해와 숙련도 알고리즘과 자료구조에 대한 이해와 구현 능력 데이터베이스 관리 및 쿼리 작성 능력 웹 개발, 앱 개발 등의 특정 분야에 대한 전문 지식 개발 도구와 개발 환경에 대한 숙련도 (IDE, 버전 관리 시스템 등) 소프트 스킬 (협업과 커뮤니케이션 능력) 효과적인 커뮤니케이션 능력 (구두 및 문서로의 설명, 팀원들과의 원활한 대화) 효율적인 협업 능력 (프로젝트 관리, 작업 일정 조율, 업무 분담) 문제 해결과 판단력 (복잡한 상황에서 문제를 분석하고 해결책을 찾는 능력) 적응력과 유연성 (변경된 요구사항에 대응하고 새로운 기술에 대한 학습과 적용) 팀워크와 리더십 (팀원들과의 협업을 도모하고 리더십을 통해 프로젝트를 이끌어나가는 능력) 이러한 역량들은 개발자가 혼자서만 작업하는 것이 아닌 팀과의 협업과 소통이 필요한 환경에서 중요하

2023년 6월 27일
·
0개의 댓글
·
post-thumbnail

Week 1-1. 내가 보려고 쓰는 환경 설정 2

서론 프리온보딩 팀과제를 하면서 주로 했던 세팅에 대한 정리입니다. 내가 보려고 쓰는 환경설정 1에서 코드 스타일과 규칙을 지키기 위한 ESLint와 Prettier를 설치했습니다. 2에서는 git hook을 사용하여 작업자가 팀 안에서 규정한 rule을 지킬 수 있도록 강제성을 부여하는 법에 대해 설명합니다. 본문은 아래 4가지 내용에 대해 서술하며, 설정 방법을 설명합니다. git hook이란? husky lint-staged 설정하기 conventional commit message 설정하기 본론 Git Hooks Git Hooks는 Git에서 이벤트가 발생할 경우에 실행할 수 있도록 제공하는 스

2023년 5월 11일
·
0개의 댓글
·
post-thumbnail

Husky는 뭘까? 정의와 사용방법

프론트엔드 협업시 유용한 라이브러리인 husky에대한 내용 정리이다. 코드형식이 맞지 않거나 오류가 발생했을 때 푸쉬를 막아준다! husky란? git hook 사용을 도와주는 라이브러리 prettier나 lint가 적용되지 않고 커밋되는 것을 방지함 Git hooks 이란? (+ Husky + lint-staged) 사용법 [husky] husky version 8 설치하기 1. crate-next-app eslint 설치에 Y할것 2. prettier 3. git 원격 저장소 연결 4. husky 설치 .husky 폴더 생성됨 5. hooks 설정- commit전에 실행할

2023년 4월 23일
·
0개의 댓글
·
post-thumbnail

Python Linter로 Ruff를 사용해보기(feat. pre-commit)

Ruff란? Rust로 만든 매우 빠른 Python Linter 2022년에 공개된 후 Star가 빠른 속도로 증가 중 (깃허브 링크) Features 기존 Linter보다 약 10~100배 빠름 pip로 설치 가능 pyproject.toml로 config를 관리함 Autofix가 지원 가능함 단순 error를 잡아주는 것이 아니라 Fix까지 해줌 (Flake8과 다르게) Flake8, isort, `

2023년 3월 19일
·
0개의 댓글
·

git hook, husky

여러 사람이 참여하는 프로젝트에서 코딩 컨벤션을 만들고 하나의 일관된 코딩 스타일에 따라서 코드가 작성되는 것은 중요하다고 생각. 여러 명의 개발자가 각자 본인의 스타일에 맞춰서 코딩을 한다면 소스는 한눈에 알아보기 힘들 것. 개발자가 일일이 신경을 써서 하기에는 리소스 낭비라고 생각되고 이러한 과정을 도와주는 도구들이 있음. git hook eslint, prettier를 직접 설정해서 사용하거나 gts를 사용하거나 프로젝트 코드 스타일을 강제하는 도구는 여러 가지가 있음. 하지만 이 도구를 사용하는 개발자들이 실수로 적용을 하지 못한 채 Git에 올리는 경우도 있음. Git에서는 hook을 지원하는데 프로그래밍에서 hook이란 특정 이벤트 또는 함수가 호출되기 전, 후에 호출이 되는 코드를 말함. 클라이언트 훅과 서버 훅으로 나눌 수 있음. 클라이언트 훅은 커밋이나 Merge 할 때 실행되고 서버 훅은 Push 할 때 서버에서 실행. > 만약 Git

2023년 3월 7일
·
0개의 댓글
·
post-thumbnail

Git hook을 사용하여 commit 전 unit test 실행 자동화 하기 | 스프링부트

사용하는 프로젝트 위치에 .git > hooks 디렉토리를 확인해보면 아래와 같은 sample 확장자의 코드가 존재한다. 이 중 pre-commit 파일을 열고 아래 코드를 넣어준다. (gradlew test 기준) 이후 커밋을 하게 되면 pre-commit이 동작하게 되고, pre-commit 파일에 들어있는 코드가 자동으로 실행되게 된다. 테스트

2023년 2월 9일
·
0개의 댓글
·

커밋메시지에 자동으로 지라 이슈번호 넣기(with Python)

set git hook prepare-commit-msg with Python 이 작업은 동료가 만들었던 쉘스크립트로 된 비슷한 작업과 도움 덕분에 가능했습니다. 삽질의 시작 동료가 설명/설정해준 방법을 이용해 커밋메시지에 자동으로 지라 이슈번호를 잘 넣고 있던 어느날, 제가 맥북을 포맷하는 사태가 일어났습니다. (당연히) 로컬에 설정돼있던 파일이 다 날아갔고, 이 참에 제가 쓰는 커밋메시지 양식에 맞춰서 다시 git hook을 세팅하려고 마음 먹었습니다. 그렇게 삽질을 하게 될 줄은 꿈에도 모른 채… 에디터(VSCode 등)로 prepare-commit-msg 편집하기 저는 vi에 익숙하지 않아서 에디터로 열었습니다. 터미널 로컬 imweb 레포에서 cd .git/hooks : .git/hooks 폴더로 들어갑니다. cp prepare-commit-msg.sample prepare-commit-msg : prepare-commit-ms

2023년 1월 11일
·
0개의 댓글
·
post-thumbnail

[개발자로 협업하기] husky 로 git hook 적용하기

🤔 Husky 를 쓰면 뭐가 좋을까? 이전 글에서 작성한 prettier 와 ESLint 설정을 세팅하고 팀별로 개발 정책을 아무리 열심히 논의해도 실수로 팀원 한명이라도 그것을 적용하지 않는다면? 또 다시 왜 팀 규칙을 지키지 않았는지에 대한 코드리뷰를 해야하는 일이 생긴다. 따라서 열심히 정한 정책들을 강제적으로 지키도록 하고 그렇지 않을 경우 merge, push 와 같은 과정에서 작업을 중단하도록 하는 git hook 을 활용하는 것은 좋은 방법으로 보인다. (팀이 git 으로 협업한다는 가정하에) git hook 이란? husky에 대해 알아보기전에 `git

2022년 12월 29일
·
0개의 댓글
·
post-thumbnail

Git Hook은 무엇이고, Husky는 왜 쓰는걸까?

📖 Introduction > Git Hook 이라는 것도 처음 들어보는데, Husky는 왜 또 쓰는 걸까? 어제 ESLint 관련 학습을 마치고 나서 Husky와 관련된 학습을 추가적으로 진행하려는데, Git hooks 이 무엇인지 묻는 질문에서 이미 내 정신은 턱 막혀버렸다. 도대체가 이놈의 공부는 하나를 좀 하려 하면 연쇄적으로 모르는 게 어디서 터져나온다. 아주 사람을 환장하게 만드는데는 도가 텄다. 결국 울며 겨자먹기로, 어차피 알아야 했을 내용이라 생각하며 Git hook에 대한 내용부터 먼저 학습했는데.. 어랍쇼 이거 봐라. 생각보다 유용하다. 따라서 오늘은 5시간 동안 여러 삽질과 정리를 통해 내가 어떻게 Husky를 적용하였고 자체적인 Git Hooks Script는 어떤 방식으로 작성했는지, 그리고 근본적으로 왜 Husky를 사용해야 하는지에 대한 고찰과 답변을 작성하고자 한다. ✒️ Git Hook 1. Git Hoo

2022년 12월 24일
·
0개의 댓글
·

팀으로 일하기 전 알아야 할 개발자의 기본기(2)

ESLint와 Prettier, Git Hook을 이용한 팀의 능률 올리기 Lintter & Code Formatter 하나의 프로젝트에서 작업자마다 각자 다른 코딩 스타일을 가지고 있고, 그것이 코드에 드러난다면 이 프로젝트를 제 3자가 읽기도 어려워지며, 팀원들끼리도 다른 팀원들이 작성한 코드를 읽고 이해하기가 힘들어진다. 이런 요소들은 결국 생산성 저하를 유발하게 되므로 이를 방지하기 위해서 팀으로 작업을 할 때는 여러 작업자들의 코딩 스타일을 일치시키기 위한 Lintter와 Code Formatter를 사용하는 것이 좋다. 이러한 도구들을 사용하게 되면 어떤 형태의 문법을 지향하고 지양할지, 포맷팅은 쌍따옴표를 사용할지, 홑따옴표를 사용할지, 혹은 몇 자마다 줄바꿈을 할지, 문장의 끝에 세미콜론을 사용할지 등의 여부를 고민하지 않고 코드 작성 자체에 집중할 수 있도록 도와준다. > 자바스크립트에서는 Linter로 ESLint를, Cod

2022년 11월 3일
·
0개의 댓글
·
post-thumbnail

ESLint - 간단 탐구

1. ESLint와 Prettier를 사용하는 이유 > 2. ESLint 적용하기 > 3. Prettier 적용하기 > 4. ESLint + Prettier > 5. Git hook을 이용한 자동화 방법 ESLint와 Prettier를 사용하는 이유 ESLint와 Prettier는 보통 프로젝트 시작 단계(초기 셋팅)에서 코드 포맷팅과 코드 품질을 위해서 사용합니다. 코드 포맷팅 : 코드 컨벤션을 설정하기 위함. 코드 품질 : 잠재적인 오류나 버그를 찾는 역할 ESLint 적용하기 목적 코드 검사 및 수정 적용 방법 node.js 설치가 필수, node package를 이용. package.json 파일 아래에 script 문에 { "lint" : "eslint src" }를 작성합니다. 이것으로 npm run lint 명령어를 실행하면 src에 해당하는 모든 코드를 검사합니다. `--

2022년 6월 29일
·
0개의 댓글
·
post-thumbnail

Husky?? 목소리 허스키해?? 뭔데??

1. Husky란? >* husky는 git hook사용을 도와주는 라이브러리이다. git hook은 뭘까? git hook은 git도 다른 버전 관리 시스템처럼 어떤 이벤트가 생겼을 때 자동으로 특정 스크립트를 실행하도록 할 수 있다. 이 훅은 클라이언트 훅과 서버 훅으로 나눌 수 있다. 클라이언트 훅은 커밋이나 Merge 할 때 실행되고 서버 훅은 Push 할 때 서버에서 실행된다. 따라서, husky를 사용하면 git을 사용할 때 특정 스크립트를 실행시킬수 있느 라이브러리이다. 1 - 1. 사용법 >* 사용되는 예시를 찾아보면, prettier, lint, test가 있다. 협업을 진행하다 보면 prettier나 lint가 적용되지 않고 git에 올라오는 경우가 가끔씩 존재한다고 한다. 이런 경우에 husky는 참말로 유용하다. 또, 코드를 수정하면서 기능적인 부분이 달라진다면 테스트 코드도 실행해 봐야 한다. 직접 하는 방법도 있지만, 우리는 사람이다...

2022년 3월 28일
·
0개의 댓글
·
post-thumbnail

Git hook을 이용한 중복 파일 자동 생성

들어가며 Typescript로 서버/클라이언트 모두를 개발하다보면 필연적으로 비슷한 interface 파일을 공유하게 된다. 만약 프로젝트가 monorepo를 사용하고 있어 클라이언트와 서버가 같은 레포지토리 아래에서 다른 패키지로 분리되어 있다면 lerna와 같은 툴을 사용할 수도 있다. 하지만 lerna와 같은 툴은 어느 정도 러닝커브가 있으며 그게 어려워 그냥 복사 붙여넣기를 하고 있는 내 상황에는 다른 해법이 필요했다. 실험 git hook을 이용하면 특정 경로에 해당되는 파일이 변화될 때마다 목표 경로에 복사한 뒤에 add를 할 수 있지 않을까 하는 생각이 들었고, 레포지토리에 해당 코드를 올렸다. 아직 import 경로가 서로 다르다든가 하는 상황에 대해서는 고려해보지 못했다. (클라이언트/서버 디렉토리 구조가 달라

2019년 10월 25일
·
0개의 댓글
·