# Custom ESLint Rules — ESLint + Prettier

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

> Domain-specific linting needs के लिए custom rules लिखें।

## कब custom rules लिखें

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

## Simple custom rule

एक custom rule जो production code में console.log को forbid करता है।

```javascript
// .eslintrc.js - custom rule
module.exports = {
  rules: {
    'no-prod-console': {
      create(context) {
        return {
          MemberExpression(node) {
            if (node.object.name === 'console' &&
                node.property.name === 'log' &&
                !context.getFilename().includes('.test.')) {
              context.report({ node, message: 'console.log not allowed in production' });
            }
          }
        };
      }
    }
  }
};
```

Output:

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

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

यदि आपका custom rule complex या reusable है, तो इसे eslint-plugin के रूप में package करें और share करें। Simple rules के लिए, इसे .eslintrc.js में inline करें।

त्वरित जाँच

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

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

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