husky(v4, v6)를 사용해야 하나요, 아니면 단순-git-hooks를 사용해야 하나요?
11164 단어 GitJavaScripthuskysimplegithookstech
이거 뭐야?
사용husky인지 사용simple-git-hooks인지 판단하기 위해 각종 조사 결과를 정리한 글입니다.
배경.
huskyv5를 통해 라이센스 변경 .
huskyv6 라이센스에서 MIT 반환 .
각 라이브러리의 차이점 확인(요약 차이)
※ 자신 조사
husky v4
husky v5
husky v6
simple-git-hooks
초기 설정
npm i {,husky}
시 진행실행
npx husky install
<=v5 동일실행
npx simple-git-hooks
git-hooks 정의 위치package.json
.Husky 아래에 있는 셸 스크립트
<=v5 동일
package.json
git-hooks의 반영 방법
필요없다
필요없다
<=v5 동일
npx simple-git-hooks
라이선스MIT License
The Parity Public License 7.0.0(OSS의 경우 MIT)
MIT License
MIT License
처음 봤어The Parity Public License,끼워 넣은 소프트웨어도 공개해야 할 것 같아.즉 상업적 이용은 실질적으로 불가능하다.
각 라이브러리의 차이점 확인(CLI로부터)
husky v4
(↓)huskyv4를 설치한 후.git/hooks 밑에 git-hooks용 셸 스크립트를 추가했습니다.
$ git init husky-v4
$ cd husky-v4
$ npm init
$ npm i husky@4
$ ls -1 .git/hooks | grep -v .sample
applypatch-msg
commit-msg
husky.local.sh
husky.sh
post-applypatch
post-checkout
post-commit
post-merge
post-rewrite
post-update
pre-applypatch
pre-auto-gc
pre-commit
pre-merge-commit
pre-push
pre-rebase
prepare-commit-msg
push-to-checkout
sendemail-validate
(↓)는 각git-hooks의 셸 스크립트에서 공통의 셸 스크립트husky.sh를 통해husky-run 실행.husky-run에서
package.json
또는 .huskyrc
에 기록된git-hooks용 명령을 실행합니다.$ cat .git/hooks/pre-commit
#!/bin/sh
# husky
. "$(dirname "$0")/husky.sh"
husky v6
(↓)huskyv6만 설치하고 특별한 일은 일어나지 않습니다.
$ git init husky-v6
$ cd husky-v6
$ npm init
$ npm i husky@6
$ ls -1 .git/hooks | grep -v .sample
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
(↓)husky v6 usage에서 보듯이 npm prepare를 정의하고husky install를 진행할 때 설정hooksPath = .husky
.$ npm set-script prepare "husky install" && npm run prepare
# .git/config に `hooksPath = .husky` が追加されている。
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
hooksPath = .husky
# hooksPath が指定している .husky ディレクトリ も作成されている。
$ ls -R .husky
_
.husky/_:
husky.sh
# .git/hooks 配下に変化はなし
$ ls -1 .git/hooks | grep -v .sample
(↓)husky v6 usage처럼 훅을 추가한 후.husky 밑에서 git-hooks용 셸 스크립트를 만듭니다.이 셸 스크립트에git-hooks용 명령이 정의되어 있습니다.
$ npx husky add .husky/pre-commit "npm test"
husky - created .husky/pre-commit
$ cat .husky/pre-commit
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npm test
simple-git-hooks
(↓) 단순-git-hooks만 설치하면 별다른 일이 일어나지 않는다.
(↓)단순-git-hooks의 usage와 같이 패키지.json에git-hooks를 추가합니다.
(↓)단순-git-hooks의 usage에 따르다.json 설정을 반영하면git/hooks의 부하에 대응하는git-hooks용 셸 스크립트를 생성합니다.
이 셸 스크립트에서 패키지.json 내 명령 복사이불
$ git init simple-git-hooks
$ cd simple-git-hooks
$ npm init
$ npm i simple-git-hooks
$ ls -1 .git/hooks | grep -v .sample
huskyv6(v5)에서 변경된 이유
js에서git-hooks에서 명령을 사용하지 않는 이유
Why husky has dropped conventional JS config
모든git-hooks 파일.git/hooks 밑에 설치되어 있기 때문에 불필요한 git-hooks와 node를 실행합니다.
core.hooksPath
을 사용해 과제를 해결했다.Modern native Git hooks
가 이겁니까?native(.git/hooks) 기능을 사용하기 편리한 자물쇠(husky js)를 제거했기 때문에 간단해지는 것은 당연하다.
v4의 과제(느리고 중복 설치)를 자물쇠로 하는 것도 어쩔 수 없는 단점...
현재 v4는
すべての git-hooks ファイルを .git/hooks 配下に設置
이기 때문에 설치가 중복되는 단점을 느끼기 어렵다(js의 업데이트로.git/hooks 측이 따르는 비용)...자동 설정을 방지하는 이유
Why husky doesn't autoinstall anymore
husky install
.postinstall은 패키지 관리자인bestpractice
그럼 어떡하지?
hooksPath
혼자서 git-hooks를 설치하는 모드를 사용하는 것도 없지는 않지만,'허스키를 사용했다'는 상태는 다른 사람과 미래의 자신에게도 이해하기 쉽죠...이 기사는 t28.dev/should-i-use-husky-or-simple-git-hook/에서 공개된 내용을 복제하거나 복제한 것이다.
Reference
이 문제에 관하여(husky(v4, v6)를 사용해야 하나요, 아니면 단순-git-hooks를 사용해야 하나요?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/t28_tatsuya/articles/should-i-use-husky-or-simple-git-hook텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)