# Pre-commit Hooks और Husky — ESLint + Prettier

Source: https://www.geekswithgeeks.com/hi/eslint-prettier/eslint-prettier-14

> Pre-commit hooks का उपयोग करके खराब कोड को commit किए जाने से रोकें।

## Husky workflow

Husky commit से पहले ESLint और Prettier को चलाता है, खराब commits को block करता है। lint-staged speed के लिए केवल changed files पर linters को चलाता है।

## Husky को सेट अप करना

Husky को install करें और commits से पहले lint करने के लिए pre-commit hook को configure करें।

```bash
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 करें

Emergencies में hooks को bypass करने के लिए `git commit --no-verify` का उपयोग करें (e.g., hotfix)। लेकिन document करें कि क्यों और immediately बाद में fix करें।

त्वरित जाँच

**Quiz:** lint-staged क्या करता है?

- [x] केवल commit के लिए staged files पर linters को चलाता है।
- [ ] Repo में सभी files को lint करता है।
- [ ] Files को स्वचालित रूप से stage करता है।

*Answer:* केवल commit के लिए staged files पर linters को चलाता है।. lint-staged पूरे codebase की जांच न करके केवल changed files को check करके speed को improve करता है।
