or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

cli.mdindex.mdprogrammatic-api.md
tile.json

index.mddocs/

0

# JSDoc to Markdown

1

2

JSDoc to Markdown is a comprehensive tool for generating markdown API documentation from JSDoc-annotated JavaScript source code. It serves as a bridge between JSDoc comments in source files and markdown documentation, making it particularly useful for injecting API documentation into project README files and maintaining up-to-date documentation. The library offers both programmatic API access and command-line interface, supporting various output formats and customization options.

3

4

## Package Information

5

6

- **Package Name**: jsdoc-to-markdown

7

- **Package Type**: npm

8

- **Language**: JavaScript (ES modules)

9

- **Installation**: `npm install --save-dev jsdoc-to-markdown`

10

11

## Core Imports

12

13

```javascript

14

import jsdoc2md from 'jsdoc-to-markdown';

15

```

16

17

For CommonJS:

18

19

```javascript

20

const jsdoc2md = require('jsdoc-to-markdown');

21

```

22

23

## Basic Usage

24

25

```javascript

26

import jsdoc2md from 'jsdoc-to-markdown';

27

28

// Generate markdown from JavaScript files

29

const apiDocs = await jsdoc2md.render({ files: 'lib/*.js' });

30

31

// Generate from source code string

32

const apiDocs = await jsdoc2md.render({

33

source: `

34

/**

35

* A wonderful function.

36

* @param {object} config - Configuration object

37

* @returns {string} Formatted output

38

*/

39

function formatData(config) {

40

return 'formatted';

41

}

42

`

43

});

44

45

// Get raw JSDoc data

46

const jsdocData = await jsdoc2md.getJsdocData({ files: 'src/*.js' });

47

48

// Get template data for custom processing

49

const templateData = await jsdoc2md.getTemplateData({ files: 'src/*.js' });

50

```

51

52

## Architecture

53

54

JSDoc to Markdown is built around several key components:

55

56

- **Core API**: Main `JsdocToMarkdown` class providing all functionality through a singleton instance

57

- **JSDoc Integration**: Leverages `jsdoc-api` for parsing JSDoc annotations

58

- **Template Engine**: Uses `dmd` (Documentation Markdown) for rendering markdown output

59

- **CLI Interface**: Full-featured command-line tool with extensive configuration options

60

- **Caching System**: Built-in caching for improved performance on repeated invocations

61

- **Option Processing**: Separate classes for handling different configuration contexts

62

63

## Capabilities

64

65

### Programmatic API

66

67

Core programmatic interface for generating markdown documentation from JSDoc-annotated source code. Provides methods for rendering, data extraction, and cache management.

68

69

```javascript { .api }

70

async function render(options?: RenderOptions): Promise<string>;

71

async function getTemplateData(options?: TemplateDataOptions): Promise<object[]>;

72

async function getJsdocData(options: JsdocDataOptions): Promise<object[]>;

73

async function clear(): Promise<void>;

74

async function getNamepaths(options: NamepathOptions): Promise<object>;

75

```

76

77

[Programmatic API](./programmatic-api.md)

78

79

### Command Line Interface

80

81

Comprehensive CLI tool for generating documentation with extensive configuration options, multiple output formats, and configuration file support.

82

83

```bash { .api }

84

# Basic usage

85

jsdoc2md src/*.js

86

87

# With options

88

jsdoc2md --files src/*.js --heading-depth 1 --template custom.hbs

89

90

# Different output modes

91

jsdoc2md --files src/*.js --json # Raw template data

92

jsdoc2md --files src/*.js --jsdoc # Raw JSDoc data

93

jsdoc2md --files src/*.js --namepaths # Namepath information

94

```

95

96

[Command Line Interface](./cli.md)

97

98

## Types

99

100

```javascript { .api }

101

interface RenderOptions extends TemplateDataOptions {

102

/** Raw template data to use instead of parsing files */

103

data?: object[];

104

/** Custom handlebars template for full control over output */

105

template?: string;

106

/** Initial heading depth (default: 2) */

107

'heading-depth'?: number;

108

/** Default language for @example blocks */

109

'example-lang'?: string;

110

/** Installed package containing helper/partial overrides */

111

plugin?: string | string[];

112

/** Handlebars helper files to override defaults */

113

helper?: string | string[];

114

/** Handlebars partial files to override defaults */

115

partial?: string | string[];

116

/** Format identifier names as code (wrap in backticks) */

117

'name-format'?: boolean;

118

/** Disable GitHub-flavored markdown */

119

'no-gfm'?: boolean;

120

/** Add horizontal rule breaks between identifiers */

121

separators?: boolean;

122

/** Module index format: none, grouped, table, dl */

123

'module-index-format'?: string;

124

/** Global index format: none, grouped, table, dl */

125

'global-index-format'?: string;

126

/** Parameter list format: list, table */

127

'param-list-format'?: string;

128

/** Property list format: list, table */

129

'property-list-format'?: string;

130

/** Member index format: grouped, list */

131

'member-index-format'?: string;

132

/** Render URL links in plain text, others in monospace */

133

'clever-links'?: boolean;

134

/** Render all links in monospace */

135

'monospace-links'?: boolean;

136

/** EOL character: posix, win32 */

137

EOL?: string;

138

}

139

140

interface TemplateDataOptions extends JsdocDataOptions {}

141

142

interface JsdocDataOptions {

143

/** Disable caching for this invocation */

144

'no-cache'?: boolean;

145

/** File paths or glob patterns to process */

146

files?: string | string[];

147

/** Source code string to process */

148

source?: string;

149

/** Path to JSDoc configuration file */

150

configure?: string;

151

}

152

153

interface NamepathOptions extends TemplateDataOptions {}

154

```