ESLint Plugin JSDoc provides multiple predefined configurations for different JSDoc validation scenarios, supporting both legacy eslintrc and modern flat config formats, with specialized variants for TypeScript projects.
Predefined configurations for traditional ESLint configuration files (.eslintrc.js, .eslintrc.json).
interface LegacyConfigurations {
// Default recommended rules as warnings
"recommended": ESLintConfig;
// Recommended rules as errors
"recommended-error": ESLintConfig;
// TypeScript-specific recommended rules as warnings
"recommended-typescript": ESLintConfig;
// TypeScript-specific recommended rules as errors
"recommended-typescript-error": ESLintConfig;
// TypeScript-flavor recommended rules as warnings
"recommended-typescript-flavor": ESLintConfig;
// TypeScript-flavor recommended rules as errors
"recommended-typescript-flavor-error": ESLintConfig;
}Usage Examples:
// .eslintrc.js
module.exports = {
extends: ["plugin:jsdoc/recommended"],
plugins: ["jsdoc"]
};
// For TypeScript projects
module.exports = {
extends: ["plugin:jsdoc/recommended-typescript"],
plugins: ["jsdoc"]
};Modern ESLint flat config format configurations with explicit plugin declarations.
interface FlatConfigurations {
// Flat config recommended rules as warnings
"flat/recommended": ESLintConfig;
// Flat config recommended rules as errors
"flat/recommended-error": ESLintConfig;
// Flat config TypeScript recommended as warnings
"flat/recommended-typescript": ESLintConfig;
// Flat config TypeScript recommended as errors
"flat/recommended-typescript-error": ESLintConfig;
// Flat config TypeScript-flavor as warnings
"flat/recommended-typescript-flavor": ESLintConfig;
// Flat config TypeScript-flavor as errors
"flat/recommended-typescript-flavor-error": ESLintConfig;
}Usage Examples:
import jsdocPlugin from "eslint-plugin-jsdoc";
export default [
jsdocPlugin.configs["flat/recommended"],
// Additional custom rules
{
rules: {
"jsdoc/require-example": "error"
}
}
];
// TypeScript project
export default [
jsdocPlugin.configs["flat/recommended-typescript"]
];Focused configurations for specific aspects of JSDoc validation.
interface SpecializedConfigurations {
// Content-focused rules for TypeScript (warnings)
"flat/contents-typescript": ESLintConfig;
// Content-focused rules for TypeScript (errors)
"flat/contents-typescript-error": ESLintConfig;
// Content-focused TypeScript-flavor rules (warnings)
"flat/contents-typescript-flavor": ESLintConfig;
// Content-focused TypeScript-flavor rules (errors)
"flat/contents-typescript-flavor-error": ESLintConfig;
// Logic-focused TypeScript rules (warnings)
"flat/logical-typescript": ESLintConfig;
// Logic-focused TypeScript rules (errors)
"flat/logical-typescript-error": ESLintConfig;
// Logic-focused TypeScript-flavor rules (warnings)
"flat/logical-typescript-flavor": ESLintConfig;
// Logic-focused TypeScript-flavor rules (errors)
"flat/logical-typescript-flavor-error": ESLintConfig;
// Requirements-focused TypeScript rules (warnings)
"flat/requirements-typescript": ESLintConfig;
// Requirements-focused TypeScript rules (errors)
"flat/requirements-typescript-error": ESLintConfig;
// Requirements-focused TypeScript-flavor rules (warnings)
"flat/requirements-typescript-flavor": ESLintConfig;
// Requirements-focused TypeScript-flavor rules (errors)
"flat/requirements-typescript-flavor-error": ESLintConfig;
// Style-focused TypeScript rules (warnings)
"flat/stylistic-typescript": ESLintConfig;
// Style-focused TypeScript rules (errors)
"flat/stylistic-typescript-error": ESLintConfig;
// Style-focused TypeScript-flavor rules (warnings)
"flat/stylistic-typescript-flavor": ESLintConfig;
// Style-focused TypeScript-flavor rules (errors)
"flat/stylistic-typescript-flavor-error": ESLintConfig;
}Usage Examples:
import jsdocPlugin from "eslint-plugin-jsdoc";
// Focus on content validation only
export default [
jsdocPlugin.configs["flat/contents-typescript"]
];
// Combine multiple focused configurations
export default [
jsdocPlugin.configs["flat/logical-typescript"],
jsdocPlugin.configs["flat/stylistic-typescript"]
];Special configurations for processing JSDoc examples and default expressions.
interface ProcessorConfigurations {
// Configuration for processing JSDoc examples
"examples": ESLintConfig[];
// Configuration for processing default expressions
"default-expressions": ESLintConfig[];
// Combined processor configuration
"examples-and-default-expressions": ESLintConfig[];
}Usage Examples:
import jsdocPlugin from "eslint-plugin-jsdoc";
// Enable JSDoc example processing
export default [
...jsdocPlugin.configs.examples,
{
rules: {
"no-console": "off" // Allow console in examples
}
}
];Rules focused on JSDoc content quality and informativeness:
jsdoc/informative-docsjsdoc/match-descriptionjsdoc/no-blank-block-descriptionsjsdoc/no-blank-blocksjsdoc/text-escapingRules focused on logical consistency and correctness:
jsdoc/check-accessjsdoc/check-param-namesjsdoc/check-property-namesjsdoc/check-syntaxjsdoc/check-tag-namesjsdoc/check-template-namesjsdoc/check-typesjsdoc/check-valuesjsdoc/empty-tagsjsdoc/implements-on-classesjsdoc/require-returns-checkjsdoc/require-yields-checkjsdoc/no-bad-blocksjsdoc/no-defaultsjsdoc/no-typesjsdoc/no-undefined-typesjsdoc/valid-typesRules focused on requiring specific JSDoc elements:
jsdoc/require-examplejsdoc/require-jsdocjsdoc/require-paramjsdoc/require-param-descriptionjsdoc/require-param-namejsdoc/require-propertyjsdoc/require-property-descriptionjsdoc/require-property-namejsdoc/require-returnsjsdoc/require-returns-descriptionjsdoc/require-yieldsRules focused on formatting and visual consistency:
jsdoc/check-alignmentjsdoc/check-line-alignmentjsdoc/lines-before-blockjsdoc/multiline-blocksjsdoc/no-multi-asterisksjsdoc/require-asterisk-prefixjsdoc/require-hyphen-before-param-descriptionjsdoc/tag-linesTypeScript configurations disable type-related rules since TypeScript provides type information:
jsdoc/require-param-typejsdoc/require-property-typejsdoc/require-returns-typejsdoc/no-typesTypeScript-flavor configurations keep most rules but disable type validation:
jsdoc/no-undefined-types onlyUsage Examples:
// Pure TypeScript project - types come from TS
function add(a: number, b: number): number {
/**
* Adds two numbers together
* @param a - First number
* @param b - Second number
* @returns Sum of the numbers
*/
return a + b;
}
// TypeScript-flavor - document types for readability
function add(a: number, b: number): number {
/**
* Adds two numbers together
* @param {number} a - First number
* @param {number} b - Second number
* @returns {number} Sum of the numbers
*/
return a + b;
}interface ESLintConfig {
name?: string;
plugins?: string[] | { [pluginName: string]: ESLintPlugin };
rules: {
[ruleName: string]: ESLintRuleConfig;
};
files?: string[];
processor?: string;
}
type ESLintRuleConfig = "off" | "warn" | "error" |
["off" | "warn" | "error", ...any[]];
interface ESLintPlugin {
meta: {
name: string;
version: string;
};
rules: { [ruleName: string]: ESLintRule };
configs: { [configName: string]: ESLintConfig | ESLintConfig[] };
}