textlint-rule-terminology

Textlint rule to check correct terms spelling

MIT License

Downloads
19.7K
Stars
46
Committers
13

textlint-rule-terminology

Textlint rule to check and fix terms, brands and technologies spelling in your tech writing in English.

For example:

  • Javascript → JavaScript
  • NPM → npm
  • front-end → frontend
  • website → site
  • Internet → internet

(You can customize the rules as you wish.)

Installation

npm install textlint-rule-terminology

Usage

textlint --fix --rule terminology Readme.md

Configuration

You can configure the rule in your .textlintrc:

{
  "rules": {
    "terminology": {
      // Your options here
    }
  }
}

Read more about configuring textlint.

defaultTerms (default: true)

Whether to load the default replacements (terms). Example:

{
  "rules": {
    "terminology": {
      // Don't load default replacements
      "defaultTerms": false,
    }
  }
}

skip (default ['BlockQuote'])

Syntax elements to skip. By default skips blockquotes. Example:

{
  "rules": {
    "terminology": {
      // Don't check terms inside links
      "skip": ["Link"],
    }
  }
}

See all available element types.

terms

Additional replacements.

Could be an array of replacements:

{
  "rules": {
    "terminology": {
      // List of terms
      "terms": [
        // Exact spelling including the case
        "JavaScript",
        "ESLint",
        "Sass",
        "Less",
        "npm",
        // RegExp (case-insensitive) → replacement
        ["front[- ]end(\\w*)", "frontend$1"],
        ["back[- ]end(\\w*)", "backend$1"],
        ["web[- ]?site(s?)", "site$1"],
        ["hot[- ]key", "hotkey"],
        ["repo\\b", "repository"],
        ["CLI tool(s?)", "command line tool$1"],
        ["build system(s?)", "build tool$1"],
        ["id['’]?s", "IDs"],
        ["(\\w+[^.?!]\\)? )webpack", "$1webpack"],
        ["(\\w+[^.?!]\\)? )internet", "$internet"]
      ],
    }
  }
}

A path to a JSON file:

{
  "rules": {
    "terminology": {
      // Load terms from a file
      "terms": "~/terms.jsonc",
    }
  }
}

Or an npm module:

{
  "rules": {
    "terminology": {
      // Load terms from npm
      "terms": "@chucknorris/terms",
    }
  }
}

Check out the default replacements.

exclude

If you don’t like any of the default replacements, you can exclude them. For example, to exclude these entries:

// terms.jsonc
[
  'JavaScript',
  'API',
  ['V[ -]?S[ -]?Code', 'Visual Studio Code'],
  ['walk-through', 'walkthrough'],
  ['(?<![\\.-])css\\b', 'CSS']
];

You need to copy the exact entry (for array, just the first element) to the exclude option of the terminology rule in your Textlint config:

{
  "rules": {
    "terminology": {
      // Excludes terms
      "exclude": [
        // Simple replacements, the casing should match terms.jsonc entry
        "JavaScript",
        "API",
        // Complex replacements, put only the first array element exactly as
        // in terms.jsonc
        "V[ -]?S[ -]?Code",
        "walk-through",
        "(?<![\\.-])css\\b"
      ]
    }
  }
}

Tips & tricks

Use textlint-filter-rule-comments to disable terminology check for particular paragraphs:

<!-- textlint-disable terminology -->

Oh my javascript!

<!-- textlint-enable -->

Other textlint rules

Change log

The change log can be found on the Releases page.

Contributing

Bug fixes are welcome, but not new features. Please take a moment to review the contributing guidelines.

Sponsoring

This software has been developed with lots of coffee, buy me one more cup to keep it going.

Authors and license

Artem Sapegin and contributors.

MIT License, see the included License.md file. Also see the project status.