eslint-plugin-tsdoc-require-2

July 3, 2026 ยท View on GitHub

npm license. npm total downloads. latest GitHub release. GitHub stars. GitHub forks. GitHub open issues. codecov.

Require TSDoc and JSDoc-style comments and documentation tags on exported TypeScript declarations and default exports, with optional enforcement for non-exported top-level declarations.

Table of contents

  1. Installation
  2. Usage (Flat Config)
  3. Opt into non-exported declarations
  4. Presets
  5. Preset matrix
  6. Preset usage examples
  7. Rules
  8. Rule docs
  9. License
  10. Contributors โœจ

Installation

npm i -D eslint-plugin-tsdoc-require-2

Usage (Flat Config)

This plugin supports both TSDoc-first and JSDoc-style documentation workflows. Use tsdocRequire.configs.tsdoc for stricter TSDoc conventions, or tsdocRequire.configs.jsdoc for JSDoc-style function tag requirements such as @param, @returns, and @throws.

import tsdocRequire from "eslint-plugin-tsdoc-require-2";

export default [
 tsdocRequire.configs.recommended,
 {
  plugins: {
   "tsdoc-require-2": tsdocRequire,
  },
  rules: {
   "tsdoc-require-2/require": "error",
   "tsdoc-require-2/require-remarks": "error",
  },
 },
];

Opt into non-exported declarations

By default, rules in this plugin focus on exported declarations. To also enforce top-level non-exported declarations, set includeNonExported: true on the rules you want.

import tsdocRequire from "eslint-plugin-tsdoc-require-2";

export default [
 {
  plugins: {
   "tsdoc-require-2": tsdocRequire,
  },
  rules: {
   "tsdoc-require-2/require": [
    "error",
    {
     includeNonExported: true,
    },
   ],
   "tsdoc-require-2/require-remarks": [
    "error",
    {
     includeNonExported: true,
    },
   ],
  },
 },
];

Presets

The matrix below is generated by scripts/sync-presets-rules-matrix.mjs.

Preset matrix

RuleFixPreset key
tsdoc-require-2/requireโ€”๐ŸŸข ๐ŸŸก ๐ŸŸ  ๐Ÿ”ต ๐Ÿ”ด ๐ŸŸฃ ๐ŸŸฆ โšซ
tsdoc-require-2/require-abstractโ€”โšซ
tsdoc-require-2/require-alphaโ€”โšซ
tsdoc-require-2/require-authorโ€”โšซ
tsdoc-require-2/require-betaโ€”โšซ
tsdoc-require-2/require-categoryโ€”โšซ
tsdoc-require-2/require-classโ€”๐Ÿ”ต ๐Ÿ”ด โšซ
tsdoc-require-2/require-decoratorโ€”โšซ
tsdoc-require-2/require-default-valueโ€”โšซ
tsdoc-require-2/require-deprecatedโ€”โšซ
tsdoc-require-2/require-documentโ€”โšซ
tsdoc-require-2/require-enumโ€”๐Ÿ”ต ๐Ÿ”ด โšซ
tsdoc-require-2/require-eventโ€”โšซ
tsdoc-require-2/require-event-propertyโ€”โšซ
tsdoc-require-2/require-exampleโ€”โšซ
tsdoc-require-2/require-expandโ€”โšซ
tsdoc-require-2/require-experimentalโ€”โšซ
tsdoc-require-2/require-functionโ€”๐Ÿ”ต ๐Ÿ”ด โšซ
tsdoc-require-2/require-groupโ€”โšซ
tsdoc-require-2/require-hiddenโ€”โšซ
tsdoc-require-2/require-hideconstructorโ€”โšซ
tsdoc-require-2/require-ignoreโ€”โšซ
tsdoc-require-2/require-importโ€”โšซ
tsdoc-require-2/require-includeโ€”โšซ
tsdoc-require-2/require-inherit-docโ€”โšซ
tsdoc-require-2/require-inlineโ€”โšซ
tsdoc-require-2/require-interfaceโ€”๐Ÿ”ต ๐Ÿ”ด โšซ
tsdoc-require-2/require-internalโ€”โšซ
tsdoc-require-2/require-labelโ€”โšซ
tsdoc-require-2/require-licenseโ€”โšซ
tsdoc-require-2/require-linkโ€”โšซ
tsdoc-require-2/require-merge-module-withโ€”โšซ
tsdoc-require-2/require-moduleโ€”๐Ÿ”ด โšซ
tsdoc-require-2/require-namespaceโ€”โšซ
tsdoc-require-2/require-overloadโ€”โšซ
tsdoc-require-2/require-overrideโ€”โšซ
tsdoc-require-2/require-package-documentationโ€”๐ŸŸ  โšซ
tsdoc-require-2/require-paramโ€”๐ŸŸฃ ๐ŸŸฆ โšซ
tsdoc-require-2/require-primary-exportโ€”โšซ
tsdoc-require-2/require-privateโ€”โšซ
tsdoc-require-2/require-private-remarksโ€”โšซ
tsdoc-require-2/require-propertyโ€”โšซ
tsdoc-require-2/require-protectedโ€”โšซ
tsdoc-require-2/require-publicโ€”โšซ
tsdoc-require-2/require-readonlyโ€”โšซ
tsdoc-require-2/require-remarksโ€”๐ŸŸก ๐ŸŸ  ๐Ÿ”ด ๐ŸŸฃ โšซ
tsdoc-require-2/require-returnsโ€”๐ŸŸฃ ๐ŸŸฆ โšซ
tsdoc-require-2/require-sealedโ€”โšซ
tsdoc-require-2/require-seeโ€”โšซ
tsdoc-require-2/require-sinceโ€”โšซ
tsdoc-require-2/require-sort-strategyโ€”โšซ
tsdoc-require-2/require-summaryโ€”โšซ
tsdoc-require-2/require-templateโ€”โšซ
tsdoc-require-2/require-throwsโ€”๐ŸŸฃ ๐ŸŸฆ โšซ
tsdoc-require-2/require-type-paramโ€”๐ŸŸฃ โšซ
tsdoc-require-2/require-use-declared-typeโ€”โšซ
tsdoc-require-2/require-virtualโ€”โšซ
tsdoc-require-2/restrict-tagsโ€”๐Ÿ”ด ๐ŸŸฃ โšซ

Preset usage examples

import tsdocRequire from "eslint-plugin-tsdoc-require-2";

export default [
 tsdocRequire.configs.detailed,
 // or:
 // tsdocRequire.configs.packages,
 // tsdocRequire.configs.tsdoc,
 // tsdocRequire.configs.jsdoc,
 // tsdocRequire.configs.typedoc,
 // tsdocRequire.configs["typedoc-strict"],
 // tsdocRequire.configs.all,
];

configs.typedoc is intentionally conservative. It only enables TypeDoc-oriented tag rules whose applicability can be inferred safely from declaration kind: classes, enums, functions, and interfaces.

configs["typedoc-strict"] adds stricter constraints, including tsdoc-require-2/restrict-tags to disallow TypeDoc compatibility-only block tags.

Rules

The table below is generated by scripts/sync-readme-rules-table.mjs.

  • Rule coverage by preset is documented in the Preset matrix above.
  • For full rule documentation links, see Rule docs.

Rule docs

License

MIT ยฉ Nick2bad4u

Contributors โœจ

All Contributors.

Thanks goes to these wonderful people (emoji key):

Nick2bad4u
Nick2bad4u

๐Ÿ› ๐Ÿ’ป ๐Ÿ“– ๐Ÿค” ๐Ÿš‡ ๐Ÿšง ๐Ÿ‘€ โš ๏ธ ๐Ÿ”ง
Snyk bot
Snyk bot

๐Ÿ›ก๏ธ ๐Ÿš‡ ๐Ÿšง ๐Ÿ‘€
StepSecurity Bot
StepSecurity Bot

๐Ÿ›ก๏ธ ๐Ÿš‡ ๐Ÿšง
dependabot[bot]
dependabot[bot]

๐Ÿš‡ ๐Ÿ›ก๏ธ
github-actions[bot]
github-actions[bot]

๐Ÿ’ป ๐Ÿš‡ ๐Ÿ“ฆ