{"id":31897205,"url":"https://github.com/blakmatrix/vitepress-jsdoc","last_synced_at":"2025-10-13T11:17:55.976Z","repository":{"id":197956983,"uuid":"699681538","full_name":"blakmatrix/vitepress-jsdoc","owner":"blakmatrix","description":"A bridge between Vitepress and JSDoc-style commented codebases for hassle-free documentation.","archived":false,"fork":false,"pushed_at":"2024-04-23T20:43:34.000Z","size":566,"stargazers_count":23,"open_issues_count":2,"forks_count":6,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-11T01:55:13.148Z","etag":null,"topics":["annotations","codebase","developer-tools","documentation","integration","jsdoc","plugin","static","vite","vitepress","vue"],"latest_commit_sha":null,"homepage":"https://blakmatrix.github.io/vitepress-jsdoc/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/blakmatrix.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null},"funding":{"github":"blakmatrix","patreon":"sudomeditate","open_collective":"vitepress-jsdoc","ko_fi":"blakmatrix","tidelift":"npm/vitepress-jsdoc","liberapay":"blakmatrix","issuehunt":"blakmatrix"}},"created_at":"2023-10-03T06:00:35.000Z","updated_at":"2025-09-07T08:40:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"e92cc650-8138-42f6-810d-5b510f748e58","html_url":"https://github.com/blakmatrix/vitepress-jsdoc","commit_stats":null,"previous_names":["blakmatrix/vitepress-jsdoc"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/blakmatrix/vitepress-jsdoc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakmatrix%2Fvitepress-jsdoc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakmatrix%2Fvitepress-jsdoc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakmatrix%2Fvitepress-jsdoc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakmatrix%2Fvitepress-jsdoc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/blakmatrix","download_url":"https://codeload.github.com/blakmatrix/vitepress-jsdoc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/blakmatrix%2Fvitepress-jsdoc/sbom","scorecard":{"id":242759,"data":{"date":"2025-08-11","repo":{"name":"github.com/blakmatrix/vitepress-jsdoc","commit":"aa34c46cf683ccbda7744135131f45d3977f0437"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/26 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":10,"reason":"GitHub workflow tokens follow principle of least privilege","details":["Info: topLevel 'contents' permission set to 'read': .github/workflows/deploy.yml:16","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/blakmatrix/vitepress-jsdoc/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/blakmatrix/vitepress-jsdoc/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:43: update your workflow using https://app.stepsecurity.io/secureworkflow/blakmatrix/vitepress-jsdoc/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/blakmatrix/vitepress-jsdoc/deploy.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/deploy.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/blakmatrix/vitepress-jsdoc/deploy.yml/main?enable=pin","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"License","score":0,"reason":"license file not detected","details":["Warn: project does not have a license file"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'main'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 2 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"20 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-grv7-fg5c-xmjg","Warn: Project is vulnerable to: GHSA-3xgq-45jj-v275","Warn: Project is vulnerable to: GHSA-67mh-4wv8-2f99","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-952p-6rrq-rcjv","Warn: Project is vulnerable to: GHSA-mwcw-c2x4-8c55","Warn: Project is vulnerable to: GHSA-3965-hpx2-q597","Warn: Project is vulnerable to: GHSA-gcx4-mw62-g8wm","Warn: Project is vulnerable to: GHSA-76p7-773f-r4q5","Warn: Project is vulnerable to: GHSA-8jhw-289h-jh2g","Warn: Project is vulnerable to: GHSA-64vr-g452-qvp3","Warn: Project is vulnerable to: GHSA-9cwx-2883-4wfx","Warn: Project is vulnerable to: GHSA-vg6x-rcgg-rjx6","Warn: Project is vulnerable to: GHSA-x574-m823-4x7w","Warn: Project is vulnerable to: GHSA-4r4m-qw57-chr8","Warn: Project is vulnerable to: GHSA-xcj6-pq6g-qj4x","Warn: Project is vulnerable to: GHSA-356w-63v5-8wf4","Warn: Project is vulnerable to: GHSA-859w-5945-r5v3","Warn: Project is vulnerable to: GHSA-4vvj-4cpr-p986"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-17T06:56:45.255Z","repository_id":197956983,"created_at":"2025-08-17T06:56:45.255Z","updated_at":"2025-08-17T06:56:45.255Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279014766,"owners_count":26085593,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["annotations","codebase","developer-tools","documentation","integration","jsdoc","plugin","static","vite","vitepress","vue"],"created_at":"2025-10-13T11:17:54.690Z","updated_at":"2025-10-13T11:17:55.970Z","avatar_url":"https://github.com/blakmatrix.png","language":"TypeScript","funding_links":["https://github.com/sponsors/blakmatrix","https://patreon.com/sudomeditate","https://opencollective.com/vitepress-jsdoc","https://ko-fi.com/blakmatrix","https://tidelift.com/funding/github/npm/vitepress-jsdoc","https://liberapay.com/blakmatrix","https://issuehunt.io/r/blakmatrix"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n[![vitepress-jsdoc logo](https://blakmatrix.github.io/vitepress-jsdoc/vitepress_jsdoc_logo.svg \"A tree as great as a man's embrace springs from a small shoot\nA terrace nine stories high begins with a pile of earth\nA journey of a thousand miles starts under one's feet. -Lao Tzu\")](https://blakmatrix.github.io/vitepress-jsdoc/)\n\n[![npm][npm]][npm-url]\n\n[![node][node]][node-url]\n[![licenses][licenses]][licenses-url]\n[![PR's welcome][prs]][prs-url]\n[![XO code style][xo]][xo-url]\n\n\n  \u003ca href=\"https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/about-dependabot-security-updates#about-compatibility-scores\"\u003e\n    \u003cimg src=\"https://api.dependabot.com/badges/compatibility_score?dependency-name=vitepress-jsdoc\u0026package-manager=npm_and_yarn\u0026previous-version=2.20\u0026new-version=3.0.1\"\u003e\n  \u003c/a\u003e\n\t\u003ca href=\"https://npmcharts.com/compare/vitepress-jsdoc?minimal=true\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/npm/dm/vitepress-jsdoc.svg\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://packagephobia.com/result?p=vitepress-jsdoc\"\u003e\n\t\t\u003cimg src=\"https://packagephobia.com/badge?p=vitepress-jsdoc\" alt=\"install size\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://opencollective.com/vitepress-jsdoc#backer\"\u003e\n\t\t\u003cimg src=\"https://opencollective.com/vitepress-jsdoc/backers/badge.svg\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://opencollective.com/vitepress-jsdoc#sponsors\"\u003e\n\t\t\u003cimg src=\"https://opencollective.com/vitepress-jsdoc/sponsors/badge.svg\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://github.com/blakmatrix/vitepress-jsdoc/graphs/contributors\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/contributors/blakmatrix/vitepress-jsdoc.svg\"\u003e\n\t\u003c/a\u003e\n\t\u003ca href=\"https://github.com/blakmatrix/vitepress-jsdoc/discussions\"\u003e\n\t\t\u003cimg src=\"https://img.shields.io/github/discussions/blakmatrix/vitepress-jsdoc\"\u003e\n\t\u003c/a\u003e\n  \u003ch1\u003evitepress-jsdoc\u003c/h1\u003e\n  \u003cp\u003e\u003ci\u003eCode More, Document Faster: The Ultimate Vitepress Integration.\u003c/i\u003e\u003c/p\u003e\n  \u003cp\u003e\n    \u003ccode\u003evitepress-jsdoc\u003c/code\u003e is the definitive bridge between Vitepress and JSDoc-style commented codebases. Crafted for developers seeking a hassle-free documentation experience, it excels in swiftly generating comprehensive docs from your annotations. Beyond just documentation, it's your key to unlocking the full potential of Vitepress, seamlessly integrating your code insights into beautifully rendered pages.\n  \u003c/p\u003e\n\u003c/div\u003e\n\n**Read the full documentation at [blakmatrix.github.io/vitepress-jsdoc/](https://blakmatrix.github.io/vitepress-jsdoc/)**\n\n\n## Install\n\n```shell\nnpm install -D vitepress-jsdoc\n```\n\n## Primary Usage: Command Line Tool\n\nThe main usage of `vitepress-jsdoc` is as a command line tool. Here's a generic command line example:\n\n```shell\n    npx vitepress-jsdoc --source path/to/src --dist ./docs --folder code --title API\n```\n\n*Note: You will probably want to grab the handlbar partial and helpers from this project*\n\n### Prebuild and Build Steps\n\nTo ensure your documentation is up-to-date, consider adding a prebuild step using the following command:\n\n```shell\nvitepress-jsdoc --source path/to/src --dist ./docs --folder code  --readme path/to/README.md --exclude=\"**/*.json,**/*.hbs,**/*.d.ts,**/*.map,**/interfaces.*\" --partials=path/to/handlebars/partials/*.hbs --helpers=path/to/handlebars/helpers/*.hbs\n```\n\nAfter the prebuild, you can build your documentation with:\n\n```shell\nvitepress build docs\n```\n\nFor development purposes, you can utilize `npx concurrently` to run both the Vitepress development server and the watch mode of `vitepress-jsdoc`:\n\n```shell\nnpx concurrently \"vitepress dev docs\" \"vitepress-jsdoc --source path/to/src ... -watch\"\n```\n\nHere's a partial package.json script to illustrate:\n\n```json\n{\n  \"scripts\": {\n    \"prebuild\": \"vitepress-jsdoc --source path/to/dist/esm --dist ./docs --folder code  --readme path/to/README.md --exclude=\\\"**/*.json,**/*.hbs,**/*.d.ts,**/*.map,**/interfaces.*\\\" --partials=path/to/handlebars/partials/*.hbs --helpers=path/to/handlebars/helpers/*.hbs\",\n    \"build\": \"vitepress build docs\",\n    // OR (using vitepress' default commands \n    // - you might take `prebuild` above and rewrite it to `docs:preview`)\n    \"docs:build\": \"npm run prebuild \u0026\u0026 vitepress build docs\",\n    \"docs:dev\": \"npx concurrently \\\"vitepress dev docs\\\" \\\"vitepress-jsdoc --source path/to/src ... -watch\\\"\"\n  }\n}\n```\n\nThis package.json script provides both the prebuild and build steps combined in the docs:build command using the \u0026\u0026 approach. The docs:dev command runs both the Vitepress development server and the watch mode of vitepress-jsdoc concurrently.\n\n## Plugin Mode (Beta)\n\nWhile `vitepress-jsdoc` can be integrated as a plugin into Vitepress, please note that this mode is currently in beta. During development, the module will function as expected. However, due to certain technical challenges in integrating with the default Vitepress transforms for markdown files, there might be limitations in this mode.\n\nFor integration into Vitepress, the module mode is recommended:\n\n```typescript\n// Example Vitepress Configuration\nimport { defineConfig } from \"vitepress\";\nimport VitpressJsdocPlugin from \"vitepress-jsdoc\";\n\nexport default defineConfig({\n  vite: {\n    plugins: [\n      VitpressJsdocPlugin({\n        folder: \"code\",\n        source: \"./src\",\n        dist: \"./docs\",\n        title: \"API\",\n        partials: [\"./partials/*.hbs\"],\n        helpers: [\"./helpers/*.js\"],\n        readme: \"./README.md\",\n        exclude: \"**/*.json,**/*.d.ts,**/*.map\",\n      }),\n    ],\n  },\n});\n\n```\n\n## Live Example\n\nThis entire project serves as a live example. You can view it [here](https://blakmatrix.github.io/vitepress-jsdoc/) or browse the files directly on [GitHub](https://github.com/blakmatrix/vitepress-jsdoc).\n\n## Vitepress Configuration\n\nFor a quick start with Vitepress:\n\n1. Initialize Vitepress in your project with `npx vitepress init`.\n2. Update your `config.mts` file as shown below.\n3. Run the development server with `npm run docs:dev`.\n4. Build for production with `npm run docs:build` (Note: the watch plugin will not run in this mode).\n\n## Sidebar Configuration\n\nWhile `vitepress-jsdoc` is agnostic to sidebars, it's recommended to use `vitepress-sidebar` for a more enhanced experience. Configure your `vitepress` `config.mts` file as follows:\n\n```ts\nimport { defineConfig } from \"vitepress\";\nimport { generateSidebar } from \"vitepress-sidebar\";\n\nconst getSideBar = (): any =\u003e {\n  const generatedSidebar = generateSidebar([\n    {\n      documentRootPath: \"docs\",\n      useTitleFromFileHeading: true,\n      hyphenToSpace: true,\n      keepMarkdownSyntaxFromTitle: true,\n    },\n  ]);\n  return generatedSidebar ?? [];\n};\n\nexport default defineConfig({\n  title: \"\u003cyour package title\u003e\",\n  description: \"\u003cyour package description\u003e\",\n  themeConfig: {\n    nav: [\n      { text: \"Home\", link: \"/\" },\n      { text: \"API\", link: \"/code/README\" },\n    ],\n    sidebar: getSideBar(),\n    outline: { level: [2, 6] },\n  },\n});\n```\n\n## Plugin/Command Options\n\nThese are plugin/command options:\n\n| Option            | Description |\n|-------------------|-------------|\n| `folder`          | Folder name |\n| `source`          | Source directory |\n| `dist`            | Destination directory |\n| `title`           | Title of your documentation |\n| `partials`        | Path to partial templates for JSDoc config|\n| `helpers`         | Path to helper scripts for JSDoc config |\n| `readme`          | Path to custom README |\n| `exclude`         | Pattern to exclude files/folders |\n\n## Contributions\n\nWe welcome and appreciate contributions from the community. If you have improvements, bug fixes, or other suggestions, please submit a pull request.\n\nIf you find value in this project and wish to show your support in other ways, consider sponsoring us. Your sponsorship will help ensure the continued development and improvement of this project.\n\n[Sponsor this project](https://github.com/blakmatrix/vitepress-jsdoc?sponsor=1)\n\n\n## License\n\nMIT.\n\n\n[npm]: https://img.shields.io/npm/v/vitepress-jsdoc.svg\n[npm-url]: https://npmjs.com/package/vitepress-jsdoc\n[node]: https://img.shields.io/node/v/vitepress-jsdoc.svg\n[node-url]: https://nodejs.org\n[prs]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg\n[prs-url]: https://github.com/blakmatrix/vitepress-jsdoc/blob/master/CONTRIBUTING.md\n[licenses-url]: https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fblakmatrix%2Fvitepress-jsdoc?ref=badge_shield\n[licenses]: https://app.fossa.io/api/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fblakmatrix%2Fvitepress-jsdoc.svg?type=shield\n[xo]: https://shields.io/badge/code_style-5ed9c7?logo=xo\u0026labelColor=gray\n[xo-url]: https://github.com/xojs/xo","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakmatrix%2Fvitepress-jsdoc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fblakmatrix%2Fvitepress-jsdoc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fblakmatrix%2Fvitepress-jsdoc/lists"}