Lesson 14 / 25
Pre-commit Hooks & Husky
Prevent bad code from being committed using pre-commit hooks.
Husky workflow
Husky runs ESLint and Prettier before commit, blocking bad commits. lint-staged runs linters only on changed files for speed.
Setting up Husky
Install Husky and configure pre-commit hook to lint before commits.
npm install --save-dev husky lint-staged
npx husky install
# Add to package.json:
"lint-staged": {
"*.js": "eslint --fix",
"*.{js,json,md}": "prettier --write"
}
# Create .husky/pre-commit
npx husky add .husky/pre-commit "npx lint-staged"
Output:
Husky and lint-staged configured
Skip when necessary
Use git commit --no-verify to bypass hooks in emergencies (e.g., hotfix). But document why and fix it immediately after.
Quick check
Quick check: What does lint-staged do?
- Runs linters only on files staged for commit.
- Lints all files in the repo.
- Stages files automatically.
Answer
Runs linters only on files staged for commit. — lint-staged improves speed by checking only changed files, not the entire codebase.