Skip to content

sapegin/textlint-rule-terminology

Repository files navigation

textlint-rule-terminology

textlint fixable rule npm Node.js CI status

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.

Buy Me A Coffee

Authors and license

Artem Sapegin and contributors.

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