Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eslint-doc-generator

bmish162.5kISC2.0.2TypeScript support: included

Automatic documentation generator for ESLint plugins and rules.

doc, docs, documentation, eslint, generator, plugin

readme

eslint-doc-generator

npm version test coverage

Automatic documentation generator for ESLint plugins and rules. Inspired by documentation conventions from ESLint and top ESLint plugins.

Generates the following documentation covering a wide variety of rule metadata:

  • README.md rules table
  • README.md configs table
  • Rule doc titles and notices
  • Rule doc options lists

Also performs configurable section consistency checks on rule docs:

  • Contains an ## Options or ## Config section and mentions each named option (for rules with options)

Table of contents

Motivation

  • Standardize documentation across thousands of ESLint plugins and rules
  • Improve the discoverability of key rule information and thus rule usability
  • Streamline the process of adding/updating rules while ensuring documentation is kept up-to-date
  • Eliminate the custom documentation scripts and tests previously built and maintained by many ESLint plugins

Setup

Install it:

npm i --save-dev eslint-doc-generator

Scripts

Add scripts to package.json:

{
  "scripts": {
    "lint": "npm-run-all \"lint:*\"",
    "lint:docs": "markdownlint \"**/*.md\"",
    "lint:eslint-docs": "npm run update:eslint-docs -- --check",
    "lint:js": "eslint .",
    "update:eslint-docs": "eslint-doc-generator"
  }
}

Update README.md

Delete any old rules list from your README.md. A new one will be automatically added to your ## Rules section (along with the following marker comments if they don't already exist):

<!-- begin auto-generated rules list -->
<!-- end auto-generated rules list -->

Optionally, add these marker comments to your README.md in a ## Configs section or similar location (uses the meta.docs.description property exported by each config if available):

<!-- begin auto-generated configs list -->
<!-- end auto-generated configs list -->

Update rule docs

Delete any old recommended/fixable/etc. notices from your rule docs. A new title and notices will be automatically added to the top of each rule doc (along with a marker comment if it doesn't already exist).

<!-- end auto-generated rule header -->

Optionally, add these marker comments to your rule docs in an ## Options section or similar location:

<!-- begin auto-generated rule options list -->
<!-- end auto-generated rule options list -->

Note that rule option lists are subject-to-change as we add support for more kinds and properties of schemas. To fully take advantage of them, you'll want to ensure your rules have the meta.schema property fleshed out with properties like description, type, enum, default, required, deprecated.

Configure linting

And be sure to enable the recommended rules from eslint-plugin-eslint-plugin as well as:

Usage

Run the script from package.json to start out or any time you add a rule or update rule metadata in your plugin:

npm run update:eslint-docs

Examples

For examples, see our users or the in-house examples below. Note that the in-house examples intentionally show all possible columns and notices.

Rules list table

See the generated rules table and legend in our example README.md.

Configs list table

See the generated configs table in our example README.md.

Rule doc notices

See the generated rule doc title and notices in our example rule docs no-foo.md, prefer-bar.md, require-baz.md.

Rule doc options lists

See the generated rule doc options lists in our example rule doc no-foo.md.

Users

This tool is used by popular ESLint plugins like:

Configuration options

These can be provided as CLI options or as config file options. All options are optional.

The CLI has an optional path argument if you need to point the CLI to an ESLint plugin directory that isn't just the current directory:

eslint-doc-generator path/to/eslint-plugin

There's also a postprocess option that's only available via a config file.

Name Description Default
--check Whether to check for and fail if there is a diff. Any diff will be displayed but no output will be written to files. Typically used during CI. false
--config-emoji Custom emoji to use for a config. Format is config-name,emoji. Option can be repeated. Default emojis are provided for common configs. See Badges for an alternative to emojis.
--config-format The format to use for config names. See choices in below table. name
--ignore-config Config to ignore from being displayed. Often used for an all config. Option can be repeated.
--ignore-deprecated-rules Whether to ignore deprecated rules from being checked, displayed, or updated. false
--init-rule-docs Whether to create rule doc files if they don't yet exist. false
--path-rule-doc Path to markdown file for each rule doc. Use {name} placeholder for the rule name. A function can also be provided for this option via a config file. docs/rules/{name}.md
--path-rule-list Path to markdown file where the rules table list should live. Option can be repeated. README.md
--rule-doc-notices Ordered, comma-separated list of notices to display in rule doc. Non-applicable notices will be hidden. See choices in below table. deprecated, configs, fixableAndHasSuggestions, requiresTypeChecking
--rule-doc-section-exclude Disallowed section in each rule doc. Exit with failure if present. Option can be repeated.
--rule-doc-section-include Required section in each rule doc. Exit with failure if missing. Option can be repeated.
--rule-doc-section-options Whether to require an "Options" or "Config" rule doc section and mention of any named options for rules with options. true
--rule-doc-title-format The format to use for rule doc titles. See choices in below table. desc-parens-prefix-name
--rule-list-columns Ordered, comma-separated list of columns to display in rule list. Empty columns will be hidden. See choices in below table. name, description, configsError, configsWarn, configsOff, fixable, hasSuggestions, requiresTypeChecking, deprecated
--rule-list-split Rule property(s) to split the rules list by. A separate list and header will be created for each value. Example: meta.type. A function can also be provided for this option via a config file.
--url-configs Link to documentation about the ESLint configurations exported by the plugin.
--url-rule-doc Link to documentation for each rule. Useful when it differs from the rule doc path on disk (e.g. custom documentation site in use). Use {name} placeholder for the rule name. A function can also be provided for this option via a config file.

Column and notice types

These are the types of rule metadata that are available for display in rule list columns (--rule-list-columns) and/or rule doc notices (--rule-doc-notices).

Emoji Type Column? Notice? Description
💼 configsError Yes No Whether a rule is set to error in a config.
🚫 configsOff Yes No Whether a rule is set to off in a config.
⚠️ configsWarn Yes No Whether a rule is set to warn in a config.
💼 configs No Yes What configs set a rule to what severities.
deprecated Yes Yes Whether a rule is deprecated (i.e. likely to be removed/renamed in a future major version).
| description Yes Yes The rule description.
🔧💡 fixableAndHasSuggestions Yes Yes Whether a rule is fixable and/or has suggestions.
🔧 fixable Yes Yes Whether a rule is fixable.
💡 hasSuggestions Yes Yes Whether a rule has suggestions.
| name Yes No The rule name.
⚙️ options Yes Yes Whether a rule has options.
💭 requiresTypeChecking Yes Yes Whether a rule requires type checking.
🗂️ type Yes Yes The rule type (problem, suggestion, or layout).

--config-format

Where recommended is the config name and eslint-plugin-test is the plugin name.

Value Example
name (default) recommended
plugin-colon-prefix-name plugin:test/recommended
prefix-name test/recommended

--rule-doc-title-format

Where no-foo is the rule name, Disallow use of foo is the rule description, and eslint-plugin-test is the plugin name.

Value Example
desc # Disallow use of foo
desc-parens-name # Disallow use of foo (no-foo)
desc-parens-prefix-name (default) # Disallow use of foo (test/no-foo)
name # no-foo
prefix-name # test/no-foo

Configuration file

There are a few ways to create a config file (as an alternative to passing the options via CLI):

  • An object exported by .eslint-doc-generatorrc.js, .eslint-doc-generatorrc.json, or any other config file format/name supported by cosmiconfig
  • An object under the eslint-doc-generator key in package.json

Config files support all the CLI options but in camelCase.

Some options are exclusive to a JavaScript-based config file:

  • postprocess - A function-only option useful for applying custom transformations such as formatting with tools like prettier. See prettier example.
  • ruleListSplit with a function - This is useful for customizing the grouping of rules into lists.

Example .eslint-doc-generatorrc.js:

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  ignoreConfig: ['all'],
};

module.exports = config;

Example .eslint-doc-generatorrc.js with pathRuleDoc function:

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  pathRuleDoc(name) {
    // e.g. rule name format is `some-plugin/some-rule`, and rule is in a monorepo under different package.
    const [plugin, rule] = name.split("/");
    return `packages/eslint-plugin-${plugin}/src/rules/${rule}.md`;
  },
};

module.exports = config;

Example .eslint-doc-generatorrc.js with ruleListSplit function:

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  ruleListSplit(rules) {
    return [
      {
        // No header for this list.
        rules: rules.filter(([name, rule]) => !rule.meta.someProp),
      },
      {
        title: 'Foo',
        rules: rules.filter(([name, rule]) => rule.meta.someProp === 'foo'),
      },
      {
        title: 'Bar',
        rules: rules.filter(([name, rule]) => rule.meta.someProp === 'bar'),
      },
    ];
  },
};

module.exports = config;

Example .eslint-doc-generatorrc.js with urlRuleDoc function:

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  urlRuleDoc(name, page) {
    if (page === 'README.md') {
      // Use URLs only in the readme.
      return `https://example.com/rules/${name}.html`;
    }
  },
};

module.exports = config;

Badges

While emojis are the recommended representations of configs that a rule belongs to, you can alternatively use a text/image/icon badge for configs by supplying the following markdown for the emoji using the --config-emoji option.

For example, here's the markdown for a text badge representing a custom fun config that displays in blue (note that the markdown includes alt text followed by the image URL):

![fun config badge](https://img.shields.io/badge/-fun-blue.svg)

Here's how you'd configure it:

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  configEmoji: [
    ['fun', '![fun config badge](https://img.shields.io/badge/-fun-blue.svg)'],
  ],
};

module.exports = config;

And how it looks:

fun config badge

Compatibility

Build tools

If you have a build step for your code like Babel or TypeScript, you may need to adjust your scripts to run your build before this tool to ensure the documentation is generated from the latest plugin information:

{
  "build": "tsc",
  "update:eslint-docs": "npm run build && eslint-doc-generator"
}

markdownlint

The output of this tool should be compatible with the default configuration of markdownlint, which you might use to lint your markdown. If it's not, you can follow the prettier example to tweak your scripts or use the postprocess option. See here for an example of markdownlint's Node API for applying fixes to use in your postprocess function.

prettier

If you use prettier to format your markdown, you can provide a postprocess function to ensure the documentation generated by this tool is formatted correctly:

const prettier = require('prettier');
const { prettier: prettierRC } = require('./package.json'); // or wherever your prettier config lies

/** @type {import('eslint-doc-generator').GenerateOptions} */
const config = {
  postprocess: (content, path) =>
    prettier.format(content, { ...prettierRC, parser: 'markdown' }),
};

module.exports = config;

Alternatively, you can configure your scripts to run prettier after this tool:

{
  "format": "prettier --write .",
  "lint:eslint-docs": "npm run update:eslint-docs && git diff --exit-code",
  "update:eslint-docs": "eslint-doc-generator && npm run format"
}

Semantic versioning policy

This tool follows semantic versioning.

New features will be released as a minor version, while bug fixes will be released as a patch version.

Breaking changes will be released as a major version and include:

  • Changing an option default
  • Renaming or removing an option
  • Other backwards-incompatible changes to the CLI / API
  • Raising Node or ESLint version requirements

Tweaks to the generated documentation output can take place in any type of release including minor and patch versions. This can break your build, as even a small formatting change will cause a diff, but you can simply re-run the tool to fix.

changelog

v2.0.1 (2024-12-12)

:bug: Bug Fix

:house: Internal

Committers: 2

v2.0.0 (2024-12-09)

:boom: Breaking Change

:bug: Bug Fix

:house: Internal

Committers: 4

v1.7.1 (2024-05-08)

:bug: Bug Fix

  • #524 OS-agnostic handling of end-of-line characters (@bmish)

Committers: 1

v1.7.0 (2024-02-28)

:rocket: Enhancement

:bug: Bug Fix

Committers: 2

v1.6.2 (2024-01-14)

:bug: Bug Fix

  • #508 Support multiple potential property locations for config description (@bmish)

Committers: 1

v1.6.1 (2023-11-16)

:bug: Bug Fix

  • #503 Better display of rule option default for array option (@bmish)

Committers: 1

v1.6.0 (2023-11-14)

:rocket: Enhancement

  • #502 Support a user-defined function for --path-rule-doc option (@hyoban)

:bug: Bug Fix

:memo: Documentation

Committers: 3

v1.5.4 (2023-11-05)

:bug: Bug Fix

  • #498 Handle when an option could have multiple types in rule option lists (@bmish)

Committers: 1

v1.5.3 (2023-10-31)

:bug: Bug Fix

  • #496 Indicate type of array for array options in rule option lists (@bmish)
  • #495 Add hint about using --init-rule-docs when rule doc missing (@bmish)

Committers: 1

v1.5.2 (2023-10-15)

:bug: Bug Fix

  • #486 Include any mandatory sections when generating new rule docs with --init-rule-docs and --rule-doc-section-include (@bmish)
  • #485 Initialize rule doc options section when using --init-rule-docs (@bmish)

Committers: 1

v1.5.1 (2023-10-13)

:bug: Bug Fix

  • #482 Sanitize newlines and pipes from markdown table cells (@bmish)
  • #484 Don't exit with failure about missing mention of rule option when rule option list was just generated (@bmish)
  • #483 Show rule option list "Default" column even with only a falsy value (@bmish)

Committers: 1

v1.5.0 (2023-10-12)

:rocket: Enhancement

  • #481 Support auto-generated rule options lists (@bmish)
  • #480 Support auto-generated config lists (@bmish)

Committers: 1

v1.4.3 (2023-02-04)

:bug: Bug Fix

  • #409 Sort emojis before badges for configs in rules list for better aesthetics (@bmish)
  • #411 Fix loading of plugin with JSON entry point (@bmish)

Committers: 1

v1.4.2 (2023-01-10)

:bug: Bug Fix

  • #388 Clarify error message when rule option is missing from rule doc (@bmish)

:memo: Documentation

  • #379 Add column for default value to readme options table (@bmish)
  • #326 Mention markdownlint compatibility (@bmish)

Committers: 1

v1.4.1 (2022-12-27)

:bug: Bug Fix

  • #375 Use concise relative paths for rule links (@bmish)

Committers: 1

v1.4.0 (2022-12-26)

:rocket: Enhancement

  • #369 Support a user-defined function for --url-rule-doc option (@bmish)

Committers: 1

v1.3.0 (2022-12-23)

:bug: Bug Fix

Committers: 1

v1.2.1 (2022-12-22)

:bug: Bug Fix

  • #367 Ensure correct link used for deprecated rule replacement link when replacement rule is from ESLint core or third-party plugin (@bmish)

Committers: 1

v1.2.0 (2022-12-21)

:rocket: Enhancement

  • #365 Support a user-defined function for --rule-list-split option (@bmish)
  • #351 Support splitting by multiple properties in --rule-list-split option (@bmish)

:bug: Bug Fix

  • #357 Ensure deprecated/schema properties are detected from deprecated, function-style rules (@bmish)
  • #355 Improve type for configEmoji option (@bmish)

:house: Internal

  • #364 Refactor functions for generating and splitting the rules list (@bmish)
  • #356 Refactor how rules are passed around in codebase (@bmish)
  • #352 Better normalize pathRuleList option internally (@bmish)

Committers: 1

v1.1.0 (2022-12-16)

:rocket: Enhancement

  • #350 Add rule doc notice type for rule description (@bmish)

:bug: Bug Fix

  • #349 Improve detection of named options to be mentioned in rule docs (@bmish)
  • #344 Hide stack trace when throwing exception (@bmish)

:memo: Documentation

  • #342 Add table of contents to readme (@bmish)
  • #336 Add table documenting types of notices and columns (@bmish)
  • #332 Mention complementary rule eslint-plugin/require-meta-docs-url (@bmish)

:house: Internal

Committers: 1

v1.0.2 (2022-12-01)

:bug: Bug Fix

  • #322 Use string union types instead of enums for better TypeScript compatibility with public config file type (@bmish)

Committers: 1

v1.0.1 (2022-12-01)

:bug: Bug Fix

  • #317 More robust handling of boolean-equivalent strings for parsing boolean CLI options and boolean properties in --rule-list-split (@bmish)
  • #314 Handle additional types of variable casing when creating sub-list headers with --rule-list-split (@bmish)
  • #309 Fully utilize readonly modifier for nested array types (@bmish)

:memo: Documentation

:house: Internal

  • #316 Use external library to retrieve an arbitrary property from a rule (@bmish)
  • #313 Avoid recreating readonly array when passing to markdown-table (@bmish)

Committers: 1

v1.0.0 (2022-11-28)

Now considered stable and already successfully adopted in many of the top ESLint plugins.

v0.28.1 (2022-11-28)

:bug: Bug Fix

  • #303 Use TypeScript readonly modifier for external/array types (@bmish)

:memo: Documentation

Committers: 1

v0.28.0 (2022-11-27)

:boom: Breaking Change

  • #301 Rename --split-by option to --rule-list-split (@bmish)
  • #300 Use arrays instead of CSV strings for config file types (@bmish)

:memo: Documentation

  • #299 Add JSDocs for exported GenerateOptions type (@bmish)

Committers: 1

v0.27.1 (2022-11-27)

:bug: Bug Fix

Committers: 1

v0.27.0 (2022-11-27)

:rocket: Enhancement

  • #285 Add postprocess config file option (useful for applying prettier formatting) (@G-Rath)
  • #296 Always display plugin prefix in deprecated rule replacement rule name (@bmish)

:bug: Bug Fix

  • #286 Remove extra closing quote from error message (@G-Rath)

:house: Internal

Committers: 2

v0.26.1 (2022-11-25)

:bug: Bug Fix

  • #279 Ensure deprecated rule replacement link respects --path-rule-doc (@bmish)
  • #280 Fix default rules list path of README.md (@bmish)
  • #275 Fix rule links when specifying a rule list file in a subdirectory with --path-rule-list (@bmish)

:house: Internal

Committers: 2

v0.26.0 (2022-11-23)

:rocket: Enhancement

  • #271 Use correct header level when splitting rules list into sub-lists with --split-by (@bmish)
  • #270 Allow specifying multiple rules lists with --path-rule-list (@bmish)
  • #269 Allow content above rule doc title (@bmish)
  • #264 Export type for config file (@bmish)

:house: Internal

Committers: 1

v0.25.0 (2022-11-21)

:rocket: Enhancement

Committers: 1

v0.24.0 (2022-11-19)

:boom: Breaking Change

  • #259 Add prefix to link name for readme config badge (@bmish)

:memo: Documentation

:house: Internal

  • #256 Add test for variation of scoped plugin name (@bmish)
  • #251 Add test that external rules are ignored (@bmish)
  • #249 Use TypeScript satisfies operator for option defaults (@bmish)
  • #241 Ensure tests are type-checked but not published (@bmish)

Committers: 1

v0.23.0 (2022-11-18)

:rocket: Enhancement

:house: Internal

  • #239 Split up tests into multiple test files (@bmish)

Committers: 2

v0.22.0 (2022-11-17)

:rocket: Enhancement

  • #232 Add optional options column and notice to indicate whether a rule is configurable (@bmish)
  • #141 More robust loading of CJS plugins using require() (@bmish)
  • #234 Support absolute path for plugin root CLI argument (@bmish)

:bug: Bug Fix

  • #233 Target ES2020 for TypeScript output (@bmish)

Committers: 1

v0.21.0 (2022-11-15)

:rocket: Enhancement

  • #229 Add optional rule list column fixableAndHasSuggestions (@bmish)

:bug: Bug Fix

  • #230 Remove special case handling for rule doc notice fixableAndHasSuggestions (@bmish)

Committers: 1

v0.20.0 (2022-11-15)

:rocket: Enhancement

  • #223 Implement config file support (@bmish)
  • #222 Add --path-rule-doc and --path-rule-list options (@bmish)

:house: Internal

Committers: 1

v0.19.1 (2022-11-09)

:bug: Bug Fix

  • #220 Fix deprecated rule replacement rule link with nested rule name (@bmish)
  • #218 Fix deprecated rule replacement rule link when plugin prefix included in replacement rule name (@bmish)

:memo: Documentation

:house: Internal

  • #211 Update Dependabot URL in comment (@ddzz)

Committers: 2

v0.19.0 (2022-11-02)

:boom: Breaking Change

  • #205 Redesign information architecture of rules table columns and rule doc notices for representing rule configs/severities (@bmish)

Committers: 1

v0.18.2 (2022-11-01)

:bug: Bug Fix

  • #203 Redo fix to ensure notation for config that warns/disables a rule does not wrap to two lines in rules table cell (@bmish)

Committers: 1

v0.18.1 (2022-11-01)

:bug: Bug Fix

  • #202 Ensure config emoji isn't missing in multi-sentence rule doc notice (@bmish)
  • #201 Ensure notation for config that warns/disables a rule does not wrap to separate line (@bmish)

Committers: 1

v0.18.0 (2022-10-31)

:rocket: Enhancement

  • #198 Indicate when a rule is set to off/warn by a config in the README rules list (@bmish)
  • #199 Add default emoji for TypeScript configs, adjust default emoji for accessibility configs (@bmish)

:memo: Documentation

  • #200 Demonstrage usage with a build step or prettier formatting (@bmish)

Committers: 1

v0.17.0 (2022-10-30)

:rocket: Enhancement

  • #187 Show diff when --check fails because docs are out-of-sync (@bmish)
  • #188 Reduce complexity by removing prettier formatting of outputted markdown (@bmish)

:memo: Documentation

  • #190 Encourage complementary use of eslint-plugin/require-meta-docs-description lint rule in readme (@bmish)
  • #183 Mention popular plugins that use this (@bmish)

Committers: 1

v0.16.0 (2022-10-28)

:rocket: Enhancement

  • #180 Indicate which configs warn for a rule (@bmish)
  • #178 Add option --rule-doc-section-options (@bmish)

:bug: Bug Fix

  • #181 Handle rule with no meta object (@bmish)
  • #177 Throw error when trying to use general configs emoji for a config when multiple configs are present (@bmish)
  • #176 Also check for escaped version of option name in rule doc for rules with options (@bmish)
  • #175 Use correct rule doc title format fallback when rule missing description (@bmish)
  • #172 Use actual nbsp character instead of HTML entity when avoiding wrapping rule names in rules list (@bmish)

Committers: 1

v0.15.0 (2022-10-26)

:rocket: Enhancement

:bug: Bug Fix

  • #170 Use code-style around rule name in rule doc title only when description also present (@bmish)
  • #169 Use case-insensitive sorting for rules, configs, and lists (@bmish)

:memo: Documentation

:house: Internal

Committers: 2

v0.14.0 (2022-10-21)

:boom: Breaking Change

  • #155 Indicate that content is auto-generated in marker comments (@bmish)

:rocket: Enhancement

  • #156 Indicate which configs disable a rule (@bmish)

:bug: Bug Fix

  • #154 Use code styling for replacement rule name in deprecated rule notice (@bmish)
  • #153 Avoid potentially having two legends for the same config emoji (@bmish)
  • #152 Use markdown-table for generating rules list (@bmish)

Committers: 1

v0.13.0 (2022-10-20)

:rocket: Enhancement

  • #149 Add consolidated rule doc notice for fixable and suggestions (@bmish)

:bug: Bug Fix

  • #148 Avoid wrapping name column in rules list (@bmish)

Committers: 1

v0.12.0 (2022-10-19)

:rocket: Enhancement

  • #139 Add --rule-doc-notices option (@bmish)
  • #136 Add default emojis for common configs (@bmish)
  • #134 Add optional column and notice for rule type (@bmish)
  • #137 Support removing the default emoji for a config with --config-emoji option (@bmish)

:bug: Bug Fix

  • #147 Hide ignored configs from rule list legend (@bmish)
  • #140 Handle plugins using exports in package.json (@bmish)

:memo: Documentation

Committers: 1

v0.11.0 (2022-10-13)

:rocket: Enhancement

Committers: 1

v0.10.0 (2022-10-12)

:rocket: Enhancement

  • #126 Add rule doc notice when type-checking is required (@bmish)

:bug: Bug Fix

:memo: Documentation

:house: Internal

  • #127 Refactor to ensure a rule doc notice is defined for each rule list column (@bmish)

Committers: 2

v0.9.0 (2022-10-10)

:rocket: Enhancement

:memo: Documentation

  • #108 Improve README especially about config options (@bmish)

Committers: 1

v0.8.1 (2022-10-10)

:bug: Bug Fix

Committers: 1

v0.8.0 (2022-10-09)

:rocket: Enhancement

  • #104 Add desc format to --rule-doc-title-format option (@bmish)

:bug: Bug Fix

  • #103 Left-align rule list column headers (@bmish)
  • #102 Use Name instead of Rule for rule list column header (@bmish)
  • #101 Improve notice/legend wording consistency and conciseness (@bmish)

Committers: 1

v0.7.0 (2022-10-09)

:rocket: Enhancement

  • #93 Add --ignore-config option (@bmish)
  • #92 Add --ignore-deprecated-rules option (@bmish)

Committers: 1

v0.6.0 (2022-10-09)

:rocket: Enhancement

  • #84 Add --rule-doc-section-include and --rule-doc-section-exclude options (@bmish)
  • #83 Add --rule-doc-title-format option (@bmish)
  • #82 Add --url-configs option (@bmish)

:bug: Bug Fix

  • #87 Handle when prettier is not installed (@bmish)
  • #81 Throw error when missing README.md (@bmish)
  • #80 Throw error when missing rule doc (@bmish)

Committers: 1

v0.5.0 (2022-10-08)

:rocket: Enhancement

  • #75 Automatically generate legend for rules list (@bmish)
  • #76 Hide empty columns from rules list (@bmish)
  • #73 Hide config column from rules list when no configs present and move deprecations to a separate column (@bmish)

:bug: Bug Fix

  • #72 Improve section header detection (@bmish)

:memo: Documentation

Committers: 2

v0.4.0 (2022-10-07)

:bug: Bug Fix

  • #70 Handle string extends from ESLint config, deprecated/function-style rules, missing rule descriptions (and use actual ESLint types to detect issues like these) (@bmish)

Committers: 1

v0.3.5 (2022-10-06)

:bug: Bug Fix

Committers: 1

v0.3.4 (2022-10-05)

:bug: Bug Fix

  • #62 Fix plugin importing on Windows (@bmish)

Committers: 1

v0.3.3 (2022-10-04)

:bug: Bug Fix

  • #60 Ignore external configs during ESLint config resolution (@bmish)

Committers: 1

v0.3.2 (2022-10-04)

:bug: Bug Fix

  • #59 Resolve extends in ESLint configs (@bmish)

:house: Internal

Committers: 1

v0.3.1 (2022-10-03)

:bug: Bug Fix

  • #48 Only apply prettier formatting to managed doc content (@bmish)

Committers: 1

v0.3.0 (2022-10-02)

:bug: Bug Fix

  • #47 Throw exception when plugin does not export a rules object (@bmish)
  • #45 Handle various possible names for options section when checking for its presence in rule doc (@bmish)
  • #43 Improved detection for README rules section when marker comments are missing (@bmish)
  • #42 Allow plugin to omit configs (@bmish)
  • #41 Handle scoped plugin names (@bmish)
  • #40 Description in rule doc title should begin with a capital letter and omit a trailing period (@bmish)
  • #39 Add plugin prefix to rule name in rule doc title (@bmish)
  • #28 Use prettier's own config resolution when formatting docs (@bmish)

Committers: 1

v0.2.0 (2022-10-01)

:rocket: Enhancement

  • #17 Automatically insert missing rule list markers in README rules section (@bmish)

:bug: Bug Fix

  • #18 Allow deprecated rules to forgo a doc file or description (@bmish)
  • #12 Avoid creating a duplicate title when rule doc is missing marker comment (@bmish)
  • #8 Use recommended config emoji in rule doc when rule is only in that config (@bmish)
  • #7 Use recommended config emoji in rules list header when no custom configs present (@bmish)

:memo: Documentation

  • #19 Tweak README (@bmish)
  • #11 Provide rule list marker comments in error message when missing from README (@bmish)

:house: Internal

  • #6 Move emojis into centralized file (@bmish)

Committers: 1

v0.1.1 (2022-10-01)

:bug: Bug Fix

  • #5 Add missing Node shebang to binary (@bmish)

Committers: 1

v0.1.0 (2022-10-01)

:rocket: Enhancement

:house: Internal

Committers: 2