Convert Figma logo to code with AI

documentationjs logodocumentation

:book: documentation for modern JavaScript

5,788
481
5,788
208

Top Related Projects

14,962

An API documentation generator for JavaScript.

7,644

Documentation generator for TypeScript projects.

9,725

RESTful web API Documentation Generator.

27,355

🃏 A magical documentation site generator.

Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.

Quick Overview

Documentation.js is a powerful documentation generator for JavaScript projects. It analyzes your code and its JSDoc comments to produce comprehensive documentation in various formats, including HTML, Markdown, and JSON.

Pros

  • Supports modern JavaScript syntax, including ES6+ features and Flow type annotations
  • Generates clean, readable documentation with a customizable theme
  • Integrates well with popular tools like GitHub and npm
  • Offers a flexible plugin system for extending functionality

Cons

  • Learning curve for advanced configuration and customization
  • May require additional setup for complex project structures
  • Limited support for TypeScript compared to native TypeScript documentation tools
  • Some users report occasional issues with certain edge cases in code parsing

Code Examples

  1. Basic usage with JSDoc comments:
/**
 * Calculates the sum of two numbers.
 * @param {number} a - The first number.
 * @param {number} b - The second number.
 * @returns {number} The sum of a and b.
 */
function add(a, b) {
  return a + b;
}
  1. Documenting a class with methods:
/**
 * Represents a geometric circle.
 */
class Circle {
  /**
   * Create a circle.
   * @param {number} radius - The radius of the circle.
   */
  constructor(radius) {
    this.radius = radius;
  }

  /**
   * Calculate the area of the circle.
   * @returns {number} The area of the circle.
   */
  area() {
    return Math.PI * this.radius ** 2;
  }
}
  1. Using Flow type annotations:
// @flow
/**
 * Filters an array based on a predicate function.
 * @param {Array<T>} arr - The input array.
 * @param {function(T): boolean} predicate - The filter function.
 * @returns {Array<T>} A new filtered array.
 * @template T
 */
function filter<T>(arr: Array<T>, predicate: (item: T) => boolean): Array<T> {
  return arr.filter(predicate);
}

Getting Started

To use documentation.js in your project:

  1. Install the package:

    npm install --save-dev documentation
    
  2. Add a script to your package.json:

    "scripts": {
      "docs": "documentation build src/** -f html -o docs"
    }
    
  3. Run the documentation generator:

    npm run docs
    

This will generate HTML documentation for all JavaScript files in the src directory and output it to the docs folder.

Competitor Comparisons

14,962

An API documentation generator for JavaScript.

Pros of JSDoc

  • Widely adopted and well-established in the JavaScript community
  • Extensive plugin ecosystem for customization
  • Supports a broader range of JavaScript environments and versions

Cons of JSDoc

  • Syntax can be verbose and cluttered
  • Output customization can be complex
  • Slower parsing and generation compared to Documentation.js

Code Comparison

JSDoc:

/**
 * Calculates the sum of two numbers.
 * @param {number} a - The first number.
 * @param {number} b - The second number.
 * @returns {number} The sum of a and b.
 */
function add(a, b) {
  return a + b;
}

Documentation.js:

/**
 * Calculates the sum of two numbers.
 * @param a The first number.
 * @param b The second number.
 * @returns The sum of a and b.
 */
function add(a, b) {
  return a + b;
}

Both JSDoc and Documentation.js are powerful documentation generators for JavaScript projects. JSDoc offers a more established ecosystem and broader compatibility, while Documentation.js provides a cleaner syntax and faster processing. The choice between them often depends on project requirements, team preferences, and existing codebase conventions.

7,644

Documentation generator for TypeScript projects.

Pros of TypeDoc

  • Specifically designed for TypeScript projects, providing better support for TypeScript-specific features
  • Generates a more visually appealing and interactive HTML documentation
  • Supports custom themes and plugins for extended functionality

Cons of TypeDoc

  • Limited support for JavaScript projects without TypeScript
  • May require more configuration to achieve desired output
  • Can be slower for large projects due to its comprehensive analysis

Code Comparison

TypeDoc example:

/**
 * Calculates the sum of two numbers.
 * @param a The first number.
 * @param b The second number.
 * @returns The sum of a and b.
 */
function add(a: number, b: number): number {
    return a + b;
}

Documentation example:

/**
 * Calculates the sum of two numbers.
 * @param {number} a The first number.
 * @param {number} b The second number.
 * @returns {number} The sum of a and b.
 */
function add(a, b) {
    return a + b;
}

Both tools use JSDoc-style comments, but TypeDoc leverages TypeScript's type annotations, while Documentation relies on JSDoc type annotations for JavaScript projects.

9,725

RESTful web API Documentation Generator.

Pros of apidoc

  • Supports multiple programming languages, not just JavaScript
  • Generates a user-friendly HTML documentation interface
  • Allows for easy versioning of API documentation

Cons of apidoc

  • Requires specific comment syntax, which may be less intuitive
  • Less integration with modern JavaScript tooling
  • May require more manual effort for complex documentation needs

Code Comparison

apidoc example:

/**
 * @api {get} /user/:id Request User information
 * @apiName GetUser
 * @apiGroup User
 *
 * @apiParam {Number} id Users unique ID.
 */

documentation example:

/**
 * Get user information
 * @param {number} id - User's unique ID
 * @returns {Object} User information
 */
function getUser(id) {
  // Implementation
}

Both tools aim to generate API documentation, but they differ in approach and syntax. apidoc uses a more structured comment format with specific annotations, while documentation relies on JSDoc-style comments that are closer to standard JavaScript documentation practices.

apidoc is more versatile across languages but may require more specific formatting. documentation is more tightly integrated with JavaScript ecosystems and tooling, potentially offering a smoother experience for JavaScript-centric projects.

The choice between these tools depends on factors such as the project's language requirements, desired output format, and team preferences for documentation style.

27,355

🃏 A magical documentation site generator.

Pros of docsify

  • Simple setup with no build process required
  • Supports multiple themes and plugins for customization
  • Generates a responsive single-page application for documentation

Cons of docsify

  • Limited support for automatic API documentation generation
  • Requires manual creation and organization of documentation files
  • May not be suitable for very large or complex documentation projects

Code Comparison

docsify:

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <link rel="stylesheet" href="//cdn.jsdelivr.net/npm/docsify/themes/vue.css">
</head>
<body>
  <div id="app"></div>
  <script>
    window.$docsify = {
      name: 'My Docs',
      repo: 'https://github.com/username/repo'
    }
  </script>
  <script src="//cdn.jsdelivr.net/npm/docsify/lib/docsify.min.js"></script>
</body>
</html>

documentation:

const documentation = require('documentation');
const fs = require('fs');

documentation.build(['index.js'], {})
  .then(documentation.formats.md)
  .then(output => {
    fs.writeFileSync('API.md', output);
  });

Summary

docsify is a lightweight, easy-to-set-up documentation generator that creates a single-page application. It's great for quick documentation projects but may lack advanced features for complex API documentation. documentation, on the other hand, is more focused on generating API documentation from source code comments, making it better suited for detailed technical documentation of JavaScript projects.

Swagger UI is a collection of HTML, JavaScript, and CSS assets that dynamically generate beautiful documentation from a Swagger-compliant API.

Pros of Swagger UI

  • Provides an interactive, visual interface for exploring and testing APIs
  • Widely adopted standard for API documentation with extensive ecosystem support
  • Supports multiple API specification formats (OpenAPI, Swagger)

Cons of Swagger UI

  • Requires a separate API specification file, which can be cumbersome to maintain
  • Less suitable for documenting non-API JavaScript projects or libraries
  • May have a steeper learning curve for teams not familiar with OpenAPI/Swagger

Code Comparison

Documentation.js example:

/**
 * Adds two numbers.
 * @param {number} a - The first number.
 * @param {number} b - The second number.
 * @returns {number} The sum of a and b.
 */
function add(a, b) {
  return a + b;
}

Swagger UI example (YAML):

paths:
  /add:
    get:
      summary: Add two numbers
      parameters:
        - name: a
          in: query
          required: true
          schema:
            type: number
        - name: b
          in: query
          required: true
          schema:
            type: number
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  result:
                    type: number

Documentation.js is better suited for documenting JavaScript code and libraries, while Swagger UI excels at documenting and visualizing RESTful APIs. The choice between the two depends on the specific needs of your project and the type of documentation you want to create.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

The documentation system for modern JavaScript

Circle CI npm version Gitter Inline docs

:date: Current maintenance status

  • Supports modern JavaScript: ES5, ES2017, JSX, Vue and Flow type annotations.
  • Infers parameters, types, membership, and more. Write less documentation: let the computer write it for you.
  • Integrates with GitHub to link directly from documentation to the code it refers to.
  • Customizable output: HTML, JSON, Markdown, and more

Examples

Documentation

User Guide

Globally install documentation using the npm package manager:

$ npm install -g documentation

This installs a command called documentation in your path, that you can point at JSDoc-annotated source code to generate human-readable documentation. First, run documentation with the --help option for help:

Usage:

# generate markdown docs for index.js and files it references
documentation build index.js -f md

# generate html docs for all files in src, and include links to source files in github
documentation build src/** -f html --github -o docs

# document index.js, ignoring any files it requires or imports
documentation build index.js -f md --shallow

# validate JSDoc syntax in util.js
documentation lint util.js

# update the API section of README.md with docs from index.js
documentation readme index.js --section=API

# build docs for all values exported by index.js
documentation build --document-exported index.js

# build html docs for a TypeScript project
documentation build index.ts --parse-extension ts -f html -o docs

Commands:
  build [input..]   build documentation
  lint [input..]    check for common style and uniformity mistakes
  readme [input..]  inject documentation into your README.md

Options:
  --version  Show version number                                       [boolean]
  --help     Show help                                                 [boolean]

Contributing

We have plenty of issues that we'd love help with.

  • Robust and complete JSDoc support, including typedefs.
  • Strong support for HTML and Markdown output
  • Documentation coverage, statistics, and validation

documentation is an OPEN Open Source Project. This means that:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit. This project is more like an open wiki than a standard guarded open source project.

NPM DownloadsLast 30 Days