How to create one output file per class - jsdoc2md/jsdoc-to-markdown GitHub Wiki
1. Say you have several documented classes in a file named example.js
:
/**
* Animal.
*/
class Animal {
constructor () {
/**
* Favourite food.
*/
this.food = null
}
}
/**
* Habitat.
*/
class Habitat {
constructor () {
/**
* Contains wood.
*/
this.wood = null
}
}
2. This example script will generate one output file per documented class found in the input. See also:
-
jsdoc2md API docs for more details on the
getTemplateDataSync
andrenderSync
methods -
Cherry picking which documentation appears in output for info on the
{{#class}}
helper used .
import jsdoc2md from 'jsdoc-to-markdown'
import { promises as fs } from 'node:fs'
import path from 'path'
/* input and output paths */
const inputFile = 'example.js'
/* get template data */
const templateData = await jsdoc2md.getTemplateData({ files: inputFile })
/* reduce templateData to an array of class names */
const classNames = templateData.filter(i => i.kind === 'class').map(i => i.name)
/* create a documentation file for each class */
for (const className of classNames) {
const template = `{{#class name="${className}"}}{{>docs}}{{/class}}`
console.log(`rendering ${className}, template: ${template}`)
const output = await jsdoc2md.render({ data: templateData, template: template })
await fs.writeFile(path.resolve(`${className}.md`), output)
}
3. Two output files are created, the first Animal.md:
Animal.
Favourite food.
Kind: instance property of Animal
4. The second output file, Habitat.md:
Habitat.
Contains wood.
Kind: instance property of Habitat