A utility to extend existing ESLint rules.
npm install eslint-rule-extender
or
yarn add eslint-rule-extender
The default export is a function that takes two arguments and returns the modified rule.
ruleExtender(originalRule: ESLintRule, options: Object) => ESLintRule;
originalRule
- The original rule to extendconst ruleExtender = require('eslint-rule-extender'); const { originalRule } = require('eslint-plugin-example'); const extendedRule = ruleExtender(originalRule, options); module.exports = { extendedRule, };
metaOverrides
Overrides for the original rule's meta
property. The properties of the meta
object can be found here.Options
const extendedRule = ruleExtender(originalRule, { metaOverrides: { type: 'suggestion', fixable: false, }, });
createAdditionalVisitors
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!
const extendedRule = ruleExtender(originalRule, { createAdditionalVisitors(context) { return { ArrowFunctionExpression(node) { context.report({ node, messageId: 'anAdditionalSuggestion' }); }, }; }, });
reportOverrides
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 reportconst extendedRule = ruleExtender(originalRule, { reportOverrides(meta) { return meta.node.type !== 'ThisExpression'; }, });
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, };