Skip to content

Latest commit

 

History

History
70 lines (52 loc) · 1.9 KB

require-meta-schema.md

File metadata and controls

70 lines (52 loc) · 1.9 KB

Require rules to implement a meta.schema property (require-meta-schema)

⚒️ The --fix option on the command line can automatically fix some of the problems reported by this rule.

Defining a schema for each rule allows eslint to validate that configuration options are passed correctly. Even when there are no options for a rule, a schema should still be defined (as an empty array) so that eslint can validate that no data is mistakenly passed to the rule.

Rule Details

This rule requires ESLint rules to have a valid meta.schema property.

Examples of incorrect code for this rule:

/* eslint eslint-plugin/require-meta-schema: error */

module.exports = {
  meta: {},
  create (context) {/* ... */},
};

module.exports = {
  meta: { schema: null },
  create (context) {/* ... */},
};

module.exports = {
  meta: { schema: [] },
  create (context) {
    const options = context.options; /* using options when schema is empty */
  },
};

Examples of correct code for this rule:

/* eslint eslint-plugin/require-meta-schema: error */

module.exports = {
  meta: { schema: [] }, // ensures no options are passed to the rule
  create (context) {/* ... */},
};

module.exports = {
  meta: {
    schema: [
      {
        type: 'object',
        properties: {
          exceptRange: {
            type: 'boolean',
          },
        },
        additionalProperties: false,
      },
    ],
  },
  create (context) {/* ... */},
};

Options

This rule takes an optional object containing:

  • booleanrequireSchemaPropertyWhenOptionless — Whether the rule should require the meta.schema property to be specified (with schema: []) for rules that have no options. Defaults to true.

Further Reading