# Vuepress Autodoc Plugin

# Overview

VuePress plugin for automatic code documentation via JSDoc with an API similar to sphinx.ext.autodoc.

# Installation

# Install in Project

To use this library in a Vue project, add the package to your package dependencies via:

npm install --save-dev vuepress-plugin-autodoc

Or, with yarn:

yarn add -D vuepress-plugin-autodoc

# Quickstart

# Configuration

To use this in documentation for a project, follow the VuePress guidelines. Here is a quick example:

module.exports = {
  plugins: [ 'vuepress-plugin-autodoc' ]
}

# Referencing Code

Once you've configured VuePress to use this plugin, you can automatically generate API documentation for code in your project using:

# API Section

## Full Documentation

/autodoc src/index.js


## Document Specific Objects

/autodoc src/index.js myFunction MyClass myConst

This will automatically render styled API documentation for code elements with JSDoc-compatible docstrings.

This type of dynamic auto-documentation allows developers to be clear in how their API is structured, providing context alongside their API documentation. For example, let's say we have a file in our project that looks like:

// contents of src/index.js

/**
* Generic number class
*/
export class Number {

 /**
  * Constructor for object.
  * @param {Number} input - Number to add.
  * @param {String} name - Name for number.
  */
  constructor(input) {
    this.number = input || 0;
    this.name = name;
  }

  /**
   * Return number from class.
   * @return {Number} The number value.
   */
   value() {
     return this.number;
   }

   /**
    * Add another number and return result.
    * @param {Number} other - Other number to add.
    * @return {Number} Other number to add.
    */
    increment(other) {
      return this.number + other;
    }
}

/**
 * Function for adding two numbers.
 * @param {Number} x - Left operand.
 * @param {Number} y - Right operand.
 */
export function add(x, y) {
  return x + y;
}


/**
 * Object with functions and data.
 */
const utils = {
  /**
   * Item in utils array.
   */
   item: false,
  /**
   * Echo value.
   *
   * @param {Number} value - Value to echo.
   */
   echo: value => console.log(value),
}

We can render pre-formatted code documentaton for specific items using the following markdown syntax:

// contents of docs/README.md

# API Documentation

Here is documentation for specific elements from our module:

/autodoc src/index.js add Number utils

And here are all of the documented elements:

/autodoc src/index.js

To show sidebar links for auto-documented items, place a header tag with the name of the item immediately before the /autodoc statement:

# Classes

## Number

/autodoc src/index.js Number

# Functions

## add

/autodoc src/index.js add

## subtract

/autodoc src/index.js subtract

# Example

Here is an example of a class definition:

# class Number(input, name)

Generic number class

Parameters

  • input (Number) - Number to add.
  • name (String) - Name for number.

# function value()

Return number from class.

Returns

  • (Number) - The number value.

# function increment(other)

Add another number and return result.

Parameters

  • other (Number) - Other number to add.

Returns

  • (Number) - Other number to add.

And here is an example of a function definition:

# function add(x, y)

Function for adding two numbers.

Parameters

  • x (Number) - Left operand.
  • y (Number) - Right operand.

And finally, a constatnt definition:

# constant utils

Object with functions and data.

# member item

Item in utils array.

# function echo(value)

Echo value.

Parameters

  • value (Number) - Value to echo.