-
Notifications
You must be signed in to change notification settings - Fork 152
How to create one output file per class
Lloyd Brookes edited this page Sep 1, 2024
·
6 revisions
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
- Home
- How jsdoc2md works
- Additional jsdoc tags supported
- Cherry picking which documentation appears in output
- Showcase ...
- Create ...
- How To ...
- How to use with npm run
- How to use with gulp
- How to create one output file per class
- How to document a AMD module
- How to document a CommonJS module (exports)
- How to document a CommonJS module (module.exports)
- How to document an ES2015 module (multiple named exports)
- How to document an ES2015 module (single default export)
- How to document Promises (using custom tags)
- How to document a ToDo list
- How to document ES2017 features
- How to document TypeScript
- The @typicalname tag
- Linking to external resources
- Param list format options
- Listing namepaths
- Troubleshooting