Utility to extend existing ESLint rules
npm install eslint-rule-extender

A utility to extend existing ESLint rules.
``sh`
npm install eslint-rule-extender
or
`sh`
yarn add eslint-rule-extender
The default export is a function that takes two arguments and returns the modified rule.
`ts`
ruleExtender(originalRule: ESLintRule, options: Object) => ESLintRule;
- originalRule - The original rule to extend
- options - An object with the desired overrides (options can be viewed below)
`js
const ruleExtender = require('eslint-rule-extender');
const { originalRule } = require('eslint-plugin-example');
const extendedRule = ruleExtender(originalRule, options);
module.exports = {
extendedRule,
};
`
Overrides for the original rule's meta property. The properties of the meta object can be found here.Options
`js`
const extendedRule = ruleExtender(originalRule, {
metaOverrides: {
type: 'suggestion',
fixable: false,
},
});
A function that has the same signature as ESLint rules' create method. It is passed the context object and should return a object of visitor callbacks. See the official ESLint docs for more details!
`js`
const extendedRule = ruleExtender(originalRule, {
createAdditionalVisitors(context) {
return {
ArrowFunctionExpression(node) {
context.report({ node, messageId: 'anAdditionalSuggestion' });
},
};
},
});
A function that is called with the report metadata of the original rule's context.report() calls. The return value of this function is a trinary with the following behavior:
- true: report with original metadata (unchanged)false
- : do not report
- modified report metadata object: report with this metadata instead
`js`
const extendedRule = ruleExtender(originalRule, {
reportOverrides(meta) {
return meta.node.type !== 'ThisExpression';
},
});
`js
const ruleExtender = require('eslint-rule-extender');
const { originalRule } = require('eslint-plugin-example');
const extendedRule = ruleExtender(originalRule, {
metaOverrides: {
type: 'suggestion',
fixable: false,
},
createAdditionalVisitors(context) {
return {
ArrowFunctionExpression(node) {
context.report({ node, messageId: 'anAdditionalSuggestion' });
},
};
},
reportOverrides(meta) {
return meta.node.type !== 'ThisExpression';
},
});
module.exports = {
extendedRule,
};
``