npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

classy-template

v1.4.0

Published

Improvements on the default JSDoc 3.6 template for modern ESM-style source code.

Downloads

64

Readme

Classy! A reimplementation of the default JSDoc template, adding context-aware inferred ES6 class syntax doclet tags like static, alias, memberOf, and constructs for nested API classes.

Visit the Example Documentation to see how it looks!

Features
  • Inferred context for ES6 class members/methods, as well as default values.
  • Structured page navigation that matches nested ES6 API classes.
  • Table of contents for each page, automatically sourced from documentation contents.
  • Optionally link to git-hosted source files instead of generating extra source pages.
  • Automatically updates the API section of supplied README in generated index page.
  • Minimal external dependencies for generated documentation.
  • Native support for small viewport sizes.
Requirements
  • Node.js v16+ with NPM 7+, as this template relies heavily on modern syntax features like nullish coalescing, and arrow functions.
  • JSDoc 4.0.2 as this was the most recent published version at the time of release, however it is also backwards-compatible with JSDoc 3.6.x.
  • jsdom 22.0.0 for sanitising parsed markdown and table of contents generation.

Installation and Usage

Through NPM:

$ npm install --save-dev classy-template

Assuming you have JSDoc installed, you can then use this template without any further configuration:

$ /path/to/jsdoc -t ./node_modules/classy-template

Configuration

This template works best when a JSDoc configuration file is supplied and additional template options are specified. It also includes a JSDoc plugin for correcting some anomalous behaviour when documenting JavaScript classes. Additionally, though not required, it is recommended you also use the JSDoc Markdown plugin as it provides extra structure to generated documentation.

Example jsdoc.json file:

{
  "plugins": [
    "plugins/markdown",
    "classy-template/plugin"
  ],
  "source": {
    "include": [
      "src"
    ]
  },
  "opts": {
    "recurse": true,
    "template": "classy-template",
    "destination": "./docs",
    "readme": "./README.md",
    "package": "./package.json"
  },
  "markdown": {
    "idInHeadings": true
  },
  "templates": {
    "classy": {
      "name": "My Project",
      "icon": "assets/icon.svg",
      "logo": "assets/logo.png",
      "apiEntry": "MyProject",
      "showName": false,
      "showGitLink": true
    }
  }
}

Options

From This Template:
These are specified under the classy property under the templates part of the JSDoc configuration file. All values are optional.

  • name: the text to use as the link to the index page, and as the alt-text for a configured logo.
    • If a package.json file is supplied to JSDoc, this defaults to the package name specified there.
    • Otherwise, defaults to "Home".
  • icon: path to an image to use as the favicon for each page.
    • Should ideally be an SVG or icon file.
    • The image will automatically be included in the assets directory of the generated output.
    • If not specified, no favicon will be included in generated pages.
  • logo: path to an image to use as the logo inside the link to the index page.
    • Should be at least 36px tall, and ideally 36px wide.
    • The image will automatically be included in the assets directory of the generated output.
    • If not specified, no logo will be included in generated page headers.
  • apiEntry: full name of a namespace or class that acts as the entry point (default export) of your package.
    • The namespace or class should be identified with a JSDoc @name, @namespace, @class, or @alias tag with the same value.
    • When specified, classy will attempt to generate a structured "API" section in the navigation menu, with member namespaces and classes included.
    • If a README file is supplied to JSDoc, and it includes an "API" heading, classy will automatically replace all content between the "API" heading and the next heading it finds with the contents of the entry point's @description JSDoc tag in the generated index page (it will not modify your README file).
    • If an entry point is specified, but no README is supplied, the contents of the entry point's @description JSDoc tag will be used as the generated index page content.
  • showName: whether the name text should be included alongside the logo in the index page link.
    • If no logo has been specified, this option will be ignored and the name will be shown in the header.
    • Defaults to true, and the name will only be hidden from the index link if this is set to the boolean value false.
  • showLogo: whether the logo should be displayed in the index page link.
    • If no logo has been specified, this option will be ignored and the name will be shown in the header.
    • Defaults to true if a logo has been specified, and the logo will only be hidden from the index link if this is set to the boolean value false.
  • showVersion: whether the package version should be included after the index page link.
    • If no package.json file is supplied to JSDoc, this option will be ignored and no version will be included in the header.
    • Defaults to true, and the version will only be hidden from the header if this is set to the boolean value false, or no package.json file is supplied.
  • showGitLink: whether the git repository host logo should be shown as a link to the repository in the header.
    • If no package.json file is supplied to JSDoc, this option will be ignored and no logo will be included in the header.
    • Defaults to true, and the git host logo/link will only be hidden from the header if this is set to the boolean value false, or no package.json file is supplied.
    • Currently supported git hosts are GitHub, Bitbucket, and GitLab, and any other host will be ignored and no logo will be shown.

From Default Template:
Options available under the default JSDoc template configuration may also be used to customise the appearance and content of generated documentation.

  • includeDate: whether to include the date the documentation was generated in the footer of a page. Defaults to true.
  • useLongnameInNav: whether to use a symbol's long name for its navigation menu entry. Defaults to false.
  • layoutFile: path to a custom template file to use for the overall layout of all generated documentation pages. Defaults to classy's layout file.
  • outputSourceFiles: whether to include links to hosted git source files, or generate and link to pages for each source file being documented.
    • If undefined, source file links will point to hosted git source files.
    • If true, source file links will point to generated source file pages.
    • If false, source file links and generated pages will be disabled.
  • staticFiles: any additional files to be copied to the static folder in the output directory.
    • As with the default template, files and directories should be specified under the include, includePattern, exclude, and excludePattern child properties.