Skip to content

massongit/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.)

Washing your code. A book on clean code for frontend developers

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.

About

Textlint rule to check correct terms spelling

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 99.3%
  • JavaScript 0.7%