Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>JSDoc File LinksNew to Visual Studio Code? Get it now.
JSDoc File Links

JSDoc File Links

Stephen Paul

| (0) | Free
Cmd/Ctrl-click markdown file links in JSDoc and comments — no hover popup required.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

JSDoc File Links

Cmd/Ctrl-click markdown file links in JSDoc and other comments — without opening the hover popup first.

Path forms

Href Resolved from
./file.ts / ../file.ts Current file’s directory (unchanged)
packages/backend/api/.../file.ts Workspace folder roots (first match that exists)
/abs/path.ts, ~/file.ts, file:///… Absolute / home / file URI

Example:

/**
 * Relative (still works):
 * [getExpenseReport](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/../../../../../backend/api/.../get-expense-report.service.ts)
 *
 * Workspace-root (via the `root` folder in a multi-root workspace):
 * [getExpenseReport](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/packages/backend/api/.../get-expense-report.service.ts)
 *
 * With symbol jump:
 * [getExpenseReport](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/packages/backend/api/.../get-expense-report.service.ts#getExpenseReport)
 */

./ and ../ are never resolved through workspace roots — document-relative syntax stays exactly as before.

Features

  • Detects [label](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/path) inside // and /* … */ comments
  • Skips strings so code like "[x](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/y.ts)" is not linkified
  • Skips http(s):, mailto:, and other URL schemes
  • Only underlines targets that exist on disk (configurable)
  • Works in TypeScript, TSX, JavaScript, and JSX

Fragments

Href Behavior
./file.ts Open the file
./file.ts#getExpenseReport Open and jump to that symbol
./file.ts#L12 Open at line 12
./file.ts#L12C4 Open at line 12, column 4

Smart landing (optional)

When a JSDoc sits on an object property:

/**
 * [NextWeeksComponent](https://github.com/Memeplexx/jsdoc-file-links/blob/HEAD/packages/frontend/.../next-weeks.component.ts)
 */
getPlannerWeeks: { ... }

…clicks try, in order:

  1. Declaration of getPlannerWeeks (backend export function)
  2. Call site .getPlannerWeeks( (frontend API usage)
  3. Label NextWeeksComponent (component class fallback)

With jsdocFileLinks.useLabelAsSymbol enabled, step 3 is included. Off by default for the label; the property-key steps always run when a context key is detected.

Install

cd ~/Documents/vscodeplugins/jsdoc-file-links
npm install
npm run install-extension

Then Developer: Reload Window.

Settings

Setting Default Description
jsdocFileLinks.enabled true Master switch
jsdocFileLinks.requireExistingFile true Only linkify paths that exist
jsdocFileLinks.useLabelAsSymbol false Use the link label as a symbol when there is no #fragment

Develop

npm test
npm run install-extension

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft