Package Exports
- eslint-rule-extender
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (eslint-rule-extender) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
eslint-rule-extender
A utility to extend existing ESLint rules.
Installation
npm install eslint-rule-extender
or
yarn add eslint-rule-extender
Usage
The default export is a function that takes two arguments and returns the modified rule.
API
ruleExtender(originalRule: ESLintRule, options: Object) => ESLintRule;
originalRule
- The original rule to extend- options - An object with the desired overrides (options can be viewed below)
Example Usage
const ruleExtender = require('eslint-rule-extender');
const { originalRule } = require('eslint-plugin-example');
const extendedRule = ruleExtender(originalRule, options);
module.exports = {
extendedRule,
};
Options
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!
Example Usage
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 report- modified report metadata object: report with this metadata instead
Example Usage
const extendedRule = ruleExtender(originalRule, {
reportOverrides(meta) {
return meta.node.type !== 'ThisExpression';
},
});
Putting It All Together
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,
};