# Custom ESLint Rules — ESLint और Prettier: Code Quality और Formatting

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

> अपने codebase की ज़रूरी conventions लागू करने के लिए local plugin में custom ESLint rule लिखें।

## कब custom rules लिखें

Standard rules आपके codebase के conventions को cover नहीं करते? उन्हें लागू करने के लिए एक custom rule लिखें। उदाहरण: specific naming patterns की आवश्यकता है, कुछ libraries को forbid करना है, architectural layers को लागू करना है।

## Simple custom rule

एक local plugin में custom rule जो console.log मना करता है, और flat config में जुड़ा हुआ।

```javascript
// eslint.config.js
const local = {
  rules: {
    'no-prod-console': {
      meta: { type: 'problem', schema: [] },
      create(context) {
        return {
          CallExpression(node) {
            const c = node.callee;
            if (c.type === 'MemberExpression' && c.object.name === 'console' && c.property.name === 'log') {
              context.report({ node, message: 'console.log is not allowed in production code' });
            }
          },
        };
      },
    },
  },
};

export default [
  { plugins: { local }, rules: { 'local/no-prod-console': 'error' } },
  { files: ['**/*.test.js'], rules: { 'local/no-prod-console': 'off' } },
];
```

Output:

```
Custom rule defined: forbids console.log in prod
```

## Rules से बेहतर plugins को prefer करें

यदि rule जटिल या पुनः उपयोगी है तो उसे eslint-plugin के रूप में publish करें। सरल team rules `eslint.config.js` के भीतर local plugin object में रह सकते हैं।

त्वरित जाँच

**Quiz:** कब एक custom ESLint rule लिखना चाहिए?

- [x] जब आपके codebase में unique conventions हैं जो standard rules cover नहीं करते।
- [ ] सभी projects के लिए।
- [ ] केवल बड़ी teams के लिए।
- [ ] Core rules बंद करने के लिए

*Answer:* जब आपके codebase में unique conventions हैं जो standard rules cover नहीं करते।. Custom rules आपकी टीम के लिए unique architectural या style decisions को automate करते हैं।
