# Pre-commit Hooks और Husky — ESLint और Prettier: Code Quality और Formatting

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

> Husky और lint-staged से खराब commits रोकें ताकि ESLint और Prettier केवल staged files पर चलें।

## Husky workflow

Husky हर commit से पहले ESLint और Prettier चलाता है और खराब commits रोकता है। `lint-staged` गति के लिए इन tools को केवल staged files पर चलाता है।

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

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

```bash
npm install --save-dev husky lint-staged
npx husky init           # creates .husky/pre-commit and a prepare script

# .husky/pre-commit
npx lint-staged

# package.json
"lint-staged": {
  "*.{js,ts,tsx}": "eslint --fix",
  "*.{js,ts,tsx,json,md,css}": "prettier --write"
}
```

Output:

```
Husky and lint-staged configured
```

## जब आवश्यक हो तो skip करें

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

त्वरित जाँच

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

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

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