Skip to content

Latest commit

 

History

History

remark-lint-heading-word-length

Black Lives Matter! Last commit timestamp Codecov Source license Monthly Downloads NPM version Uses Semantic Release!

remark-lint-heading-word-length

This is a remark-lint rule to warn when headings have too many or too few words. Headings are split into words by the regular expression \s.

This package is a spiritual fork of the archived remark-lint-heading-length package, which has a couple of flaws.


Install

Due to the nature of the unified ecosystem, this package is ESM only and cannot be require'd.

npm install --save-dev remark-lint-heading-word-length

Usage

Via API

import { read } from 'to-vfile';
import { reporter } from 'vfile-reporter';
import { remark } from 'remark';
import remarkLint from 'remark-lint';
import lintHeadingWordLength from 'remark-lint-heading-word-length';

const file = await remark()
  .use(remarkLint)
  .use(lintHeadingWordLength)
  .process(await read('example.md'));

console.log(reporter(file));
remark --use remark-lint --use lint-heading-word-length README.md

In package.json:

  /* … */
  "remarkConfig": {
    "plugins": [
      "remark-lint-heading-word-length"
      /* … */
    ]
  },
  /* … */

In .remarkrc.js:

module.exports = {
  plugins: [
    // …
    'lint-heading-word-length'
  ]
};

In .remarkrc.mjs:

import lintHeadingWordLength from 'remark-lint-heading-word-length';

export default {
  plugins: [
    // …
    lintHeadingWordLength
  ]
};

API

Detailed interface information can be found under docs/.

Options

This rule supports standard configuration that all remark lint rules accept (such as false to turn it off or [1, options] to configure it).

Additionally, this plugin recognizes the following options:

minimumWords

Valid values: false | number
Default: 1

The minimum number of words required in a heading.

Set to false to prevent minimum word length checks.

maximumWords

Valid values: false | number
Default: 10

The maximum number of words allowed in a heading.

Set to false (or Infinity) to prevent maximum word length checks.

Examples

ok.md

In

# `options.optionA`

# This right here is essentially a ten (10) word heading

Out

No messages.

not-ok.md

In

# This right here is a ten + one (11) word heading

#

Out

1:1-1:51: Heading must have at most 10 words (current length: 11)
3:1-3:2: Heading must have at least 1 word (current length: 0)

Related

Contributing and Support

New issues and pull requests are always welcome and greatly appreciated! 🤩 Just as well, you can star 🌟 this project to let me know you found it useful! ✊🏿 Thank you!

See CONTRIBUTING.md and SUPPORT.md for more information.

Contributors

See the table of contributors.