Skip to Content
Nextra 4.0 is released πŸŽ‰

πŸ€– μžλ™ν™”λœ κ·œμ•½ 검사 ν™˜κ²½

이 ν”„λ‘œμ νŠΈλŠ” husky λ₯Ό μ‚¬μš©ν•˜μ—¬ Git Hook을 μ„€μ •ν•˜κ³ , 컀밋 전에 μ½”λ“œ ν’ˆμ§ˆμ„ μžλ™μœΌλ‘œ κ²€μ‚¬ν•˜λŠ” ν™˜κ²½μ„ κ΅¬μ„±ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. 이 ν™˜κ²½μ€ μ½”λ“œ μž‘μ„± μ‹œ λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό 사전에 λ°©μ§€ν•˜κ³ , μΌκ΄€λœ μ½”λ“œ μŠ€νƒ€μΌμ„ μœ μ§€ν•˜λŠ” 데 도움을 μ€λ‹ˆλ‹€.

⬇️ μ„€μΉ˜ 및 μ„€μ •

루트 package.json νŒŒμΌμ— μ •μ˜λœ prepare 슀크립트λ₯Ό 톡해 huskyλ₯Ό μ„€μΉ˜ν•˜κ³  μ΄ˆκΈ°ν™”ν•˜λ„λ‘ μ„€μ •λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 즉, 둜컬 ν™˜κ²½μ—μ„œ pnpm install λͺ…λ Ήμ–΄λ₯Ό μ‹€ν–‰ν•˜λ©΄ μžλ™μœΌλ‘œ huskyκ°€ μ„€μΉ˜λ˜κ³ , Git Hook이 μ„€μ •λ©λ‹ˆλ‹€.

package.json
{ "scripts": { "prepare": "husky install" } }

βš“οΈ Git Hook

루트 λ””λ ‰ν† λ¦¬μ˜ .husky 폴더에 Git Hook μŠ€ν¬λ¦½νŠΈλ“€μ΄ μœ„μΉ˜ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

pre-commit

pre-commit 훅은 컀밋 전에 μ‹€ν–‰λ˜λ©°, λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€:

  • Linting: eslintλ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œ μŠ€νƒ€μΌκ³Ό ν’ˆμ§ˆμ„ κ²€μ‚¬ν•©λ‹ˆλ‹€.
  • Formatting: prettierλ₯Ό μ‚¬μš©ν•˜μ—¬ μ½”λ“œ ν¬λ§·νŒ…μ„ μ μš©ν•©λ‹ˆλ‹€.
  • Type Checking: tsc --noEmit λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ TypeScript νƒ€μž… 검사λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€.

pre-commit ν›…μ—μ„œ μ‹€ν–‰ν•˜λŠ” λͺ…령어듀은 λͺ¨λ‘ Turbo task 둜 μ •μ˜λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. 즉, 이 훅은 Turbo의 캐싱 및 병렬 μ‹€ν–‰ κΈ°λŠ₯을 ν™œμš©ν•˜μ—¬ λΉ λ₯΄κ³  효율적으둜 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

.husky/pre-commit
echo "πŸ” commit 이전에 lint κ·œμΉ™μ„ μ μš©ν•©λ‹ˆλ‹€..." if ( pnpm run lint && pnpm run format:check && pnpm run check-types ); then echo "βœ… λͺ¨λ“  lint κ·œμΉ™μ΄ μ„±κ³΅μ μœΌλ‘œ μ μš©λ˜μ—ˆμŠ΅λ‹ˆλ‹€." exit 0 else echo "❌ lint κ·œμΉ™ κ²€μ‚¬μ—μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€." exit 1 fi

commit-msg

commit-msg 훅은 commitlint CLI λ₯Ό μ‚¬μš©ν•˜μ—¬ 컀밋 λ©”μ‹œμ§€κ°€ κ·œμ•½μ— λ§žλŠ”μ§€ κ²€μ‚¬ν•©λ‹ˆλ‹€. 검사 κ²°κ³Ό κ·œμ•½μ— λ§žμ§€ μ•ŠλŠ” 경우, 컀밋이 κ±°λΆ€λ©λ‹ˆλ‹€.

.husky/commit-msg
COMMIT_MESSAGE_FILE=$1 COMMIT_MESSAGE=$(cat "$COMMIT_MESSAGE_FILE") echo "β€οΈβ€πŸ©Ή Commit Message: $COMMIT_MESSAGE" npx commitlint --edit $1 if [ $? -eq 0 ]; then echo "πŸ”† Commit message meets the convention πŸ”†" exit 0 else echo "❌ Commit message does not meet the convention ❌" exit 1 fi

Last updated on