Skip to main content
On this page

deno doc, documentation generator

Command line usage

deno doc [OPTIONS] [source_file]...

Show documentation for a module.

Output documentation to standard output:

deno doc ./path/to/module.ts

Output documentation in HTML format:

deno doc --html --name="My library" ./path/to/module.ts

Lint a module for documentation diagnostics:

deno doc --lint ./path/to/module.ts

Target a specific symbol:

deno doc ./path/to/module.ts MyClass.someField

Show documentation for runtime built-ins:

deno doc
deno doc --filter Deno.Listener

Dependency management options Jump to heading

--import-map Jump to heading

Load import map file from local file or remote URL.

--lock Jump to heading

Check the specified lock file. (If value is not provided, defaults to "./deno.lock").

--no-lock Jump to heading

Disable auto discovery of the lock file.

--no-npm Jump to heading

Do not resolve npm modules.

--no-remote Jump to heading

Do not resolve remote modules.

--reload Jump to heading

Short flag: -r

Reload source code cache (recompile TypeScript) no value Reload everything jsr:@std/http/file-server,jsr:@std/assert/assert-equals Reloads specific modules npm: Reload all npm modules npm:chalk Reload specific npm module.

Options Jump to heading

--allow-import Jump to heading

Short flag: -I

Allow importing from remote hosts. Optionally specify allowed IP addresses and host names, with ports as necessary. Default value: deno.land:443,jsr.io:443,esm.sh:443,cdn.jsdelivr.net:443,raw.githubusercontent.com:443,user.githubusercontent.com:443.

Documentation options Jump to heading

--category-docs Jump to heading

Path to a JSON file keyed by category and an optional value of a markdown doc.

--default-symbol-map Jump to heading

Uses the provided mapping of default name to wanted name for usage blocks.

--filter Jump to heading

Dot separated path to symbol.

--html Jump to heading

Output documentation in HTML format.

--json Jump to heading

Output documentation in JSON format.

--lint Jump to heading

Output documentation diagnostics.

--name Jump to heading

The name that will be used in the docs (ie for breadcrumbs).

--output Jump to heading

Directory for HTML documentation output.

--private Jump to heading

Output private documentation.

--strip-trailing-html Jump to heading

Remove trailing .html from various links. Will still generate files with a .html extension.

--symbol-redirect-map Jump to heading

Path to a JSON file keyed by file, with an inner map of symbol to an external link.

Examples Jump to heading

deno doc followed by a list of one or more source files will print the JSDoc documentation for each of the module's exported members.

For example, given a file add.ts with the contents:

/**
 * Adds x and y.
 * @param {number} x
 * @param {number} y
 * @returns {number} Sum of x and y
 */
export function add(x: number, y: number): number {
  return x + y;
}

Running the Deno doc command, prints the function's JSDoc comment to stdout:

deno doc add.ts
function add(x: number, y: number): number
  Adds x and y. @param {number} x @param {number} y @returns {number} Sum of x and y

Linting Jump to heading

You can use --lint flag to check for problems in your documentation while it's being generated. deno doc will point out three kinds of problems:

  1. Error for an exported type from the root module referencing a non-exported type.
    • Ensures API consumers have access to all the types the API uses. This can be suppressed by exporting the type from a root module (one of the files specified to deno doc on the command line) or by marking the type with an @internal jsdoc tag.
  2. Error for missing return type or property type on a public type.
    • Ensures deno doc displays the return/property type and helps improve type checking performance.
  3. Error for missing JS doc comment on a public type.
    • Ensures the code is documented. Can be suppressed by adding a jsdoc comment, or via an @ignore jsdoc tag to exclude it from the documentation. Alternatively, add an @internal tag to keep it in the docs, but signify it's internal.

For example:

/mod.ts
interface Person {
  name: string;
  // ...
}

export function getName(person: Person) {
  return person.name;
}
$ deno doc --lint mod.ts
Type 'getName' references type 'Person' which is not exported from a root module.
Missing JS documentation comment.
Missing return type.
    at file:///mod.ts:6:1

These lints are meant to help you write better documentation and speed up type-checking in your projects. If any problems are found, the program exits with non-zero exit code and the output is reported to standard error.

Supported JSDoc tags Jump to heading

Deno implements a large set of JSDoc tags, but also additional tags that are not specified in the JSDoc specification. The following tags are supported:

  • constructor/class: mark a function to be a constructor.
  • ignore: ignore a symbol to be included in the output.
  • internal: mark a symbol to be used only for internal. In the HTML generator, the symbol will not get a listed entry, however it will still be generated and can be reached if a non-internal symbol links to it.
  • public: treat a symbol as public API. Equivalent of TypeScript public keyword.
  • private: treat a symbol as private API. Equivalent of TypeScript private keyword.
  • protected: treat a property or method as protected API. Equivalent of TypeScript protected keyword.
  • readonly: mark a symbol to be readonly, meaning that it cannot be overwritten.
  • experimental: mark a symbol as experimental, meaning that the API might change or be removed, or behaviour is not well-defined.
  • deprecated: mark a symbol as deprecated, meaning that it is not supported anymore and might be removed in a future version.
  • module: this tag can be defined on a top-level JSDoc comment, which will treat that comment to be for the file instead of the subsequent symbol.
  • category/group: mark a symbol to be of a specific category/group. This is useful for grouping together various symbols together.
  • see: define an external reference related to the symbol.
  • example: define an example for the symbol.
  • tags: define additional custom labels for a symbol, via a comma separated list.
  • since: define since when the symbol has been available.
  • callback: define a callback.
  • template/typeparam/typeParam: define a callback.
  • prop/property: define a property on a symbol.
  • typedef: define a type.
  • param/arg/argument: define a parameter on a function.
  • return/returns: define the return type and/or comment of a function.
  • throws/exception: define what a function throws when called.
  • enum: define an object to be an enum.
  • extends/augments: define a type that a function extends on.
  • this: define what the this keyword refers to in a function.
  • type: define the type of a symbol.
  • default: define the default value for a variable, property or field.

HTML output Jump to heading

Use the --html flag to generate a static site with documentation.

$ deno doc --html --name="My library" ./mod.ts

$ deno doc --html --name="My library" --output=./documentation/ ./mod.ts

$ deno doc --html --name="My library" ./sub1/mod.ts ./sub2/mod.ts

The generated documentation is a static site with multiple pages that can be deployed to any static site hosting service.

A client-side search is included in the generated site, but is not available if user's browser has JavaScript disabled.

JSON output Jump to heading

Use the --json flag to output the documentation in JSON format. This JSON format is consumed by the deno doc website and is used to generate module documentation.

Help us make these docs great!

Did you find what you needed?

Privacy policy

Make a contribution

Deno's docs are open source. See something that's wrong or unclear? Submit a pull request:

Edit this page